File tree Expand file tree Collapse file tree 2 files changed +34
-5
lines changed Expand file tree Collapse file tree 2 files changed +34
-5
lines changed Original file line number Diff line number Diff line change @@ -2076,9 +2076,17 @@ bool QgsGeometry::intersects(QgsRect* r) const
2076
2076
rectwkt+=" ))" ;
2077
2077
2078
2078
geos::Geometry *geosRect = wktReader->read ( qstrdup (rectwkt) );
2079
- if (geosGeom-> intersects (geosRect))
2079
+ try // geos might throw exception on error
2080
2080
{
2081
- returnval=true ;
2081
+ if (geosGeom->intersects (geosRect))
2082
+ {
2083
+ returnval=true ;
2084
+ }
2085
+ }
2086
+ catch (geos::TopologyException* e)
2087
+ {
2088
+ QString error = e->toString ().c_str ();
2089
+ QgsLogger::warning (" GEOS: " + error);
2082
2090
}
2083
2091
2084
2092
delete geosGeom;
@@ -2121,9 +2129,17 @@ bool QgsGeometry::fast_intersects(const QgsRect* r) const
2121
2129
geos::WKTReader *wktReader = new geos::WKTReader (gf);
2122
2130
geos::Geometry *geosRect = wktReader->read ( qstrdup (rectwkt) );
2123
2131
2124
- if (geosGeom->intersects (geosRect))
2132
+ try // geos might throw exception on error
2133
+ {
2134
+ if (geosGeom->intersects (geosRect))
2135
+ {
2136
+ returnval=true ;
2137
+ }
2138
+ }
2139
+ catch (geos::TopologyException* e)
2125
2140
{
2126
- returnval=true ;
2141
+ QString error = e->toString ().c_str ();
2142
+ QgsLogger::warning (" GEOS: " + error);
2127
2143
}
2128
2144
2129
2145
delete geosGeom;
Original file line number Diff line number Diff line change @@ -423,7 +423,20 @@ QgsFeature *QgsOgrProvider::getNextFeature(bool fetchAttributes)
423
423
mSelectionRectangle ->exportToWkt (&sWkt );
424
424
geos::Geometry *geosRect = wktReader->read (sWkt );
425
425
assert (geosRect != 0 );
426
- if (geosGeom->intersects (geosRect))
426
+ bool intersection = false ;
427
+
428
+ try // geos might throw exception on error
429
+ {
430
+ if (geosGeom->intersects (geosRect))
431
+ intersection = true ;
432
+ }
433
+ catch (geos::TopologyException* e)
434
+ {
435
+ QString error = e->toString ().c_str ();
436
+ QgsLogger::warning (" GEOS: " + error);
437
+ }
438
+
439
+ if (intersection)
427
440
{
428
441
QgsDebugMsg (" intersection found" );
429
442
delete[] sWkt ;
You can’t perform that action at this time.
0 commit comments