Skip to content
Permalink
Browse files

vector file writer: defer destroying spatial reference (fixes #10515)

(cherry picked from commit cee63c8)
  • Loading branch information
jef-n committed Nov 21, 2015
1 parent e9d2a0e commit 44767492a14d3959fa8def1bdef5c1030085b188
Showing with 9 additions and 5 deletions.
  1. +8 −5 src/core/qgsvectorfilewriter.cpp
  2. +1 −0 src/core/qgsvectorfilewriter.h
@@ -69,6 +69,7 @@ QgsVectorFileWriter::QgsVectorFileWriter(
)
: mDS( NULL )
, mLayer( NULL )
, mOgrRef( NULL )
, mGeom( NULL )
, mError( NoError )
, mCodec( 0 )
@@ -258,12 +259,11 @@ QgsVectorFileWriter::QgsVectorFileWriter(
}

// consider spatial reference system of the layer
OGRSpatialReferenceH ogrRef = NULL;
if ( srs )
{
QString srsWkt = srs->toWkt();
QgsDebugMsg( "WKT to save as is " + srsWkt );
ogrRef = OSRNewSpatialReference( srsWkt.toLocal8Bit().data() );
mOgrRef = OSRNewSpatialReference( srsWkt.toLocal8Bit().data() );
}

// datasource created, now create the output layer
@@ -283,7 +283,7 @@ QgsVectorFileWriter::QgsVectorFileWriter(
// disable encoding conversion of OGR Shapefile layer
CPLSetConfigOption( "SHAPE_ENCODING", "" );

mLayer = OGR_DS_CreateLayer( mDS, TO8F( layerName ), ogrRef, wkbType, options );
mLayer = OGR_DS_CreateLayer( mDS, TO8F( layerName ), mOgrRef, wkbType, options );

if ( options )
{
@@ -316,8 +316,6 @@ QgsVectorFileWriter::QgsVectorFileWriter(
QgsDebugMsg( "Couldn't open file " + layerName + ".qpj" );
}
}

OSRDestroySpatialReference( ogrRef );
}

if ( mLayer == NULL )
@@ -1810,6 +1808,11 @@ QgsVectorFileWriter::~QgsVectorFileWriter()
{
OGR_DS_Destroy( mDS );
}

if ( mOgrRef )
{
OSRDestroySpatialReference( mOgrRef );
}
}

QgsVectorFileWriter::WriterError
@@ -275,6 +275,7 @@ class CORE_EXPORT QgsVectorFileWriter

OGRDataSourceH mDS;
OGRLayerH mLayer;
OGRSpatialReferenceH mOgrRef;
OGRGeometryH mGeom;

QgsFields mFields;

0 comments on commit 4476749

Please sign in to comment.
You can’t perform that action at this time.