From 2d35b16aaeb0cfb0154078371188fe67db3c8ff9 Mon Sep 17 00:00:00 2001 From: Martin Dobias Date: Thu, 4 Aug 2011 19:48:54 +0200 Subject: [PATCH] Avoid a segfault when NULL layer is passed to vector writer --- python/core/qgsvectorfilewriter.sip | 7 ++++++- src/core/qgsvectorfilewriter.cpp | 5 +++++ src/core/qgsvectorfilewriter.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/python/core/qgsvectorfilewriter.sip b/python/core/qgsvectorfilewriter.sip index 3db6aa9c680..5011070a649 100644 --- a/python/core/qgsvectorfilewriter.sip +++ b/python/core/qgsvectorfilewriter.sip @@ -21,7 +21,12 @@ public: NoError = 0, ErrDriverNotFound, ErrCreateDataSource, - ErrCreateLayer + ErrCreateLayer, + ErrAttributeTypeUnsupported, + ErrAttributeCreationFailed, + ErrProjection, // added in 1.5 + ErrFeatureWriteFailed, // added in 1.6 + ErrInvalidLayer, // added in 2.0 }; /** Write contents of vector layer to a shapefile diff --git a/src/core/qgsvectorfilewriter.cpp b/src/core/qgsvectorfilewriter.cpp index b5b6a5962e2..6de11eb7c93 100644 --- a/src/core/qgsvectorfilewriter.cpp +++ b/src/core/qgsvectorfilewriter.cpp @@ -588,6 +588,11 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer, QgsCoordinateTransform* ct = 0; int shallTransform = false; + if ( layer == NULL ) + { + return ErrInvalidLayer; + } + if ( destCRS && destCRS->isValid() ) { // This means we should transform diff --git a/src/core/qgsvectorfilewriter.h b/src/core/qgsvectorfilewriter.h index 6322e71ce8e..851ce43cf56 100644 --- a/src/core/qgsvectorfilewriter.h +++ b/src/core/qgsvectorfilewriter.h @@ -53,6 +53,7 @@ class CORE_EXPORT QgsVectorFileWriter ErrAttributeCreationFailed, ErrProjection, // added in 1.5 ErrFeatureWriteFailed, // added in 1.6 + ErrInvalidLayer, // added in 2.0 }; /** Write contents of vector layer to a shapefile