@@ -73,16 +73,14 @@ bool QgsWFSProvider::nextFeature( QgsFeature& feature )
73
73
}
74
74
75
75
feature.setFeatureId ( mFeatures [*mFeatureIterator ]->id () );
76
- if ( mFetchGeom )
77
- {
78
- QgsGeometry* geometry = mFeatures [*mFeatureIterator ]->geometry ();
79
- unsigned char *geom = geometry->wkbBuffer ();
80
- int geomSize = geometry->wkbSize ();
81
76
82
- unsigned char * copiedGeom = new unsigned char [geomSize];
83
- memcpy ( copiedGeom, geom, geomSize );
84
- feature.setGeometryAndOwnership ( copiedGeom, geomSize );
85
- }
77
+ // we need geometry anyway, e.g. for intersection tests
78
+ QgsGeometry* geometry = mFeatures [*mFeatureIterator ]->geometry ();
79
+ unsigned char *geom = geometry->wkbBuffer ();
80
+ int geomSize = geometry->wkbSize ();
81
+ unsigned char * copiedGeom = new unsigned char [geomSize];
82
+ memcpy ( copiedGeom, geom, geomSize );
83
+ feature.setGeometryAndOwnership ( copiedGeom, geomSize );
86
84
87
85
const QgsAttributeMap& attributes = mFeatures [*mFeatureIterator ]->attributeMap ();
88
86
for ( QgsAttributeList::const_iterator it = mAttributesToFetch .begin (); it != mAttributesToFetch .end (); ++it )
@@ -92,7 +90,7 @@ bool QgsWFSProvider::nextFeature( QgsFeature& feature )
92
90
++mFeatureIterator ;
93
91
if ( mUseIntersect )
94
92
{
95
- if ( feature.geometry ()->intersects ( mSpatialFilter ) )
93
+ if ( feature.geometry () && feature. geometry () ->intersects ( mSpatialFilter ) )
96
94
{
97
95
return true ;
98
96
}
0 commit comments