Skip to content

Commit

Permalink
Fix crash when zooming in PostGIS raster layers (ticket 20747)
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent authored and nyalldawson committed Jan 21, 2019
1 parent 195d98f commit 9da842d
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions src/providers/gdal/qgsgdalprovider.cpp
Expand Up @@ -200,12 +200,20 @@ QgsGdalProvider::QgsGdalProvider( const QgsGdalProvider &other )
: QgsRasterDataProvider( other.dataSourceUri(), QgsDataProvider::ProviderOptions() ) : QgsRasterDataProvider( other.dataSourceUri(), QgsDataProvider::ProviderOptions() )
, mUpdate( false ) , mUpdate( false )
{ {
QString driverShortName;
if ( other.mGdalBaseDataset )
{
driverShortName = GDALGetDriverShortName( GDALGetDatasetDriver( other.mGdalBaseDataset ) );
}


// The JP2OPENJPEG driver might consume too much memory on large datasets // The JP2OPENJPEG driver might consume too much memory on large datasets
// so make sure to really use a single one. // so make sure to really use a single one.
bool forceUseSameDataset = // The PostGISRaster driver internally uses a per-thread connection cache.
( other.mGdalBaseDataset && // This can lead to crashes if two datasets created by the same thread are used at the same time.
GDALGetDatasetDriver( other.mGdalBaseDataset ) == GDALGetDriverByName( "JP2OPENJPEG" ) ) || bool forceUseSameDataset = ( driverShortName.toUpper() == QStringLiteral( "JP2OPENJPEG" ) ||
CSLTestBoolean( CPLGetConfigOption( "QGIS_GDAL_FORCE_USE_SAME_DATASET", "FALSE" ) ); driverShortName == QStringLiteral( "PostGISRaster" ) ||
CSLTestBoolean( CPLGetConfigOption( "QGIS_GDAL_FORCE_USE_SAME_DATASET", "FALSE" ) ) );


if ( forceUseSameDataset ) if ( forceUseSameDataset )
{ {
Expand Down

0 comments on commit 9da842d

Please sign in to comment.