Skip to content

Commit 6186c0f

Browse files
committed
fix windows build (extern "C" can returns pointers, but not C++ containers)
1 parent 65092d1 commit 6186c0f

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

cmake/SIPMacros.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
SET(SIP_INCLUDES)
3939
SET(SIP_TAGS)
40-
SET(SIP_CONCAT_PARTS 10)
40+
SET(SIP_CONCAT_PARTS 16)
4141
SET(SIP_DISABLE_FEATURES)
4242
SET(SIP_EXTRA_OPTIONS)
4343
SET(SIP_EXTRA_OBJECTS)

src/core/qgsdataitemproviderregistry.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include "qgslogger.h"
2222
#include "qgsproviderregistry.h"
2323

24-
typedef QList<QgsDataItemProvider *> dataItemProviders_t();
24+
typedef QList<QgsDataItemProvider *> *dataItemProviders_t();
2525

2626

2727
/**
@@ -71,8 +71,10 @@ QgsDataItemProviderRegistry::QgsDataItemProviderRegistry()
7171
dataItemProviders_t *dataItemProvidersFn = reinterpret_cast< dataItemProviders_t * >( cast_to_fptr( library->resolve( "dataItemProviders" ) ) );
7272
if ( dataItemProvidersFn )
7373
{
74+
QList<QgsDataItemProvider *> *providerList = dataItemProvidersFn();
7475
// the function is a factory - we keep ownership of the returned providers
75-
mProviders << dataItemProvidersFn();
76+
mProviders << *providerList;
77+
delete providerList;
7678
}
7779

7880
// legacy support - using dataItem() and dataCapabilities() methods

src/providers/ogr/qgsogrprovider.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2928,10 +2928,11 @@ QGISEXTERN bool createEmptyDataSource( const QString &uri,
29282928
}
29292929

29302930

2931-
QGISEXTERN QList<QgsDataItemProvider *> dataItemProviders()
2931+
QGISEXTERN QList< QgsDataItemProvider * > *dataItemProviders()
29322932
{
2933-
return QList<QgsDataItemProvider *>()
2934-
<< new QgsGeoPackageDataItemProvider;
2933+
QList< QgsDataItemProvider * > *providers = new QList< QgsDataItemProvider * >();
2934+
*providers << new QgsGeoPackageDataItemProvider;
2935+
return providers;
29352936
}
29362937

29372938
QgsCoordinateReferenceSystem QgsOgrProvider::crs() const

src/providers/wms/qgswmsdataitems.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -469,11 +469,15 @@ QgsDataItem *QgsWmsDataItemProvider::createDataItem( const QString &path, QgsDat
469469
return nullptr;
470470
}
471471

472-
QGISEXTERN QList<QgsDataItemProvider *> dataItemProviders()
472+
QGISEXTERN QList<QgsDataItemProvider *> *dataItemProviders()
473473
{
474-
return QList<QgsDataItemProvider *>()
475-
<< new QgsWmsDataItemProvider
476-
<< new QgsXyzTileDataItemProvider;
474+
QList<QgsDataItemProvider *> *providers = new QList<QgsDataItemProvider *>();
475+
476+
*providers
477+
<< new QgsWmsDataItemProvider
478+
<< new QgsXyzTileDataItemProvider;
479+
480+
return providers;
477481
}
478482

479483
// ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)