[QGIS Commit] r9508 - trunk/qgis/src/providers/wfs

svn_qgis at osgeo.org svn_qgis at osgeo.org
Tue Oct 21 04:14:00 EDT 2008


Author: mhugent
Date: 2008-10-21 04:13:59 -0400 (Tue, 21 Oct 2008)
New Revision: 9508

Modified:
   trunk/qgis/src/providers/wfs/qgswfsprovider.cpp
Log:
Fix for crash when selecting wfs features

Modified: trunk/qgis/src/providers/wfs/qgswfsprovider.cpp
===================================================================
--- trunk/qgis/src/providers/wfs/qgswfsprovider.cpp	2008-10-20 23:36:38 UTC (rev 9507)
+++ trunk/qgis/src/providers/wfs/qgswfsprovider.cpp	2008-10-21 08:13:59 UTC (rev 9508)
@@ -73,16 +73,14 @@
     }
 
     feature.setFeatureId( mFeatures[*mFeatureIterator]->id() );
-    if ( mFetchGeom )
-    {
-      QgsGeometry* geometry = mFeatures[*mFeatureIterator]->geometry();
-      unsigned char *geom = geometry->wkbBuffer();
-      int geomSize = geometry->wkbSize();
 
-      unsigned char* copiedGeom = new unsigned char[geomSize];
-      memcpy( copiedGeom, geom, geomSize );
-      feature.setGeometryAndOwnership( copiedGeom, geomSize );
-    }
+    //we need geometry anyway, e.g. for intersection tests
+    QgsGeometry* geometry = mFeatures[*mFeatureIterator]->geometry();
+    unsigned char *geom = geometry->wkbBuffer();
+    int geomSize = geometry->wkbSize();
+    unsigned char* copiedGeom = new unsigned char[geomSize];
+    memcpy( copiedGeom, geom, geomSize );
+    feature.setGeometryAndOwnership( copiedGeom, geomSize );
 
     const QgsAttributeMap& attributes = mFeatures[*mFeatureIterator]->attributeMap();
     for ( QgsAttributeList::const_iterator it = mAttributesToFetch.begin(); it != mAttributesToFetch.end(); ++it )
@@ -92,7 +90,7 @@
     ++mFeatureIterator;
     if ( mUseIntersect )
     {
-      if ( feature.geometry()->intersects( mSpatialFilter ) )
+      if ( feature.geometry() && feature.geometry()->intersects( mSpatialFilter ) )
       {
         return true;
       }



More information about the QGIS-commit mailing list