diff --git a/cmake/SIPMacros.cmake b/cmake/SIPMacros.cmake index e58fb409666..5e1bdfd117e 100644 --- a/cmake/SIPMacros.cmake +++ b/cmake/SIPMacros.cmake @@ -37,7 +37,7 @@ SET(SIP_INCLUDES) SET(SIP_TAGS) -SET(SIP_CONCAT_PARTS 10) +SET(SIP_CONCAT_PARTS 16) SET(SIP_DISABLE_FEATURES) SET(SIP_EXTRA_OPTIONS) SET(SIP_EXTRA_OBJECTS) diff --git a/src/core/qgsdataitemproviderregistry.cpp b/src/core/qgsdataitemproviderregistry.cpp index 0dc9c73e13b..a204e76dcd4 100644 --- a/src/core/qgsdataitemproviderregistry.cpp +++ b/src/core/qgsdataitemproviderregistry.cpp @@ -21,7 +21,7 @@ #include "qgslogger.h" #include "qgsproviderregistry.h" -typedef QList dataItemProviders_t(); +typedef QList *dataItemProviders_t(); /** @@ -71,8 +71,10 @@ QgsDataItemProviderRegistry::QgsDataItemProviderRegistry() dataItemProviders_t *dataItemProvidersFn = reinterpret_cast< dataItemProviders_t * >( cast_to_fptr( library->resolve( "dataItemProviders" ) ) ); if ( dataItemProvidersFn ) { + QList *providerList = dataItemProvidersFn(); // the function is a factory - we keep ownership of the returned providers - mProviders << dataItemProvidersFn(); + mProviders << *providerList; + delete providerList; } // legacy support - using dataItem() and dataCapabilities() methods diff --git a/src/providers/ogr/qgsogrprovider.cpp b/src/providers/ogr/qgsogrprovider.cpp index 5ae34902d22..e7dbdf088c1 100644 --- a/src/providers/ogr/qgsogrprovider.cpp +++ b/src/providers/ogr/qgsogrprovider.cpp @@ -2928,10 +2928,11 @@ QGISEXTERN bool createEmptyDataSource( const QString &uri, } -QGISEXTERN QList dataItemProviders() +QGISEXTERN QList< QgsDataItemProvider * > *dataItemProviders() { - return QList() - << new QgsGeoPackageDataItemProvider; + QList< QgsDataItemProvider * > *providers = new QList< QgsDataItemProvider * >(); + *providers << new QgsGeoPackageDataItemProvider; + return providers; } QgsCoordinateReferenceSystem QgsOgrProvider::crs() const diff --git a/src/providers/wms/qgswmsdataitems.cpp b/src/providers/wms/qgswmsdataitems.cpp index 9c16753300e..0f175ad9d63 100644 --- a/src/providers/wms/qgswmsdataitems.cpp +++ b/src/providers/wms/qgswmsdataitems.cpp @@ -469,11 +469,15 @@ QgsDataItem *QgsWmsDataItemProvider::createDataItem( const QString &path, QgsDat return nullptr; } -QGISEXTERN QList dataItemProviders() +QGISEXTERN QList *dataItemProviders() { - return QList() - << new QgsWmsDataItemProvider - << new QgsXyzTileDataItemProvider; + QList *providers = new QList(); + + *providers + << new QgsWmsDataItemProvider + << new QgsXyzTileDataItemProvider; + + return providers; } // ---------------------------------------------------------------------------