[gdal-dev] postgis OGRFeature crash QGIS

Even Rouault even.rouault at spatialys.com
Wed Oct 7 04:18:22 PDT 2015


Le mercredi 07 octobre 2015 12:51:05, Luca Delucchi a écrit :
> Hi everybody,
> 
> I'm fixing some problem with a QGIS plugin, and I'm fighting with a
> problem with postgis OGRFeature that it crash QGIS for a
> __GI___libc_free problem. The log of gdb is available here [0].
> 
> The error appear at the end of write_layer_single function (line 204)
> during the return of this file [1]. I tried to fix in several way, but
> I'm not able to understand. The error appear only with
> postgresql/postgis datasource, not with other.
> 
> Thanks a lot for any suggestion

Luca,

I'm not completely sure if this is the reason, but there's at least something 
to correct related to the use of:

self.feat_defn.AddFieldDefn(style_field)

Quoting OGRFeatureDefn::AddFieldDefn() documentation  
http://gdal.org/classOGRFeatureDefn.html#a40e681d8464b42f1a1fac655f16ac3dd :

"To add a new field definition to a layer definition, do not use this function 
directly, but use OGRLayer::CreateField() instead."

Hum actually looking more closely, I think the issue is that you modify the 
layer definition after having accumulated features in the "features" 
dictionary.

Still quoting OGRFeatureDefn::AddFieldDefn() documentation 
"This method should only be called while there are no OGRFeature objects in 
existance based on this OGRFeatureDefn."

So you should probably call outLayer.CreateField() before reading the postgres 
features.

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list