[QGIS Commit] r8156 - trunk/qgis/src/core

svn_qgis at osgeo.org svn_qgis at osgeo.org
Thu Feb 14 05:34:08 EST 2008


Author: mhugent
Date: 2008-02-14 05:34:08 -0500 (Thu, 14 Feb 2008)
New Revision: 8156

Modified:
   trunk/qgis/src/core/qgsgeometry.cpp
Log:
Added some 0 pointer checks for geometry (useful e.g. in cases of NULL geometries in postgis layers)

Modified: trunk/qgis/src/core/qgsgeometry.cpp
===================================================================
--- trunk/qgis/src/core/qgsgeometry.cpp	2008-02-13 18:37:41 UTC (rev 8155)
+++ trunk/qgis/src/core/qgsgeometry.cpp	2008-02-14 10:34:08 UTC (rev 8156)
@@ -5044,7 +5044,13 @@
 QgsGeometry* QgsGeometry::buffer(double distance, int segments)
 {
   if (mGeos == NULL)
-    exportWkbToGeos();
+    {
+      exportWkbToGeos();
+    }
+  if(!mGeos)
+    {
+      return 0;
+    }
   GEOS_GEOM::Geometry* geos = mGeos->buffer(distance, segments);
   QgsGeometry* g = new QgsGeometry;
   g->setGeos(geos);
@@ -5054,7 +5060,13 @@
 QgsGeometry* QgsGeometry::convexHull()
 {
   if (mGeos == NULL)
-    exportWkbToGeos();
+    {
+      exportWkbToGeos();
+    }
+  if(!mGeos)
+    {
+      return 0;
+    }
   GEOS_GEOM::Geometry* geos = mGeos->convexHull();
   QgsGeometry* g = new QgsGeometry;
   g->setGeos(geos);
@@ -5064,11 +5076,21 @@
 QgsGeometry* QgsGeometry::intersection(QgsGeometry* geometry)
 {
   if (geometry == NULL)
-    return NULL;
+    {
+      return NULL;
+    }
   if (mGeos == NULL)
-    exportWkbToGeos();
+    {
+      exportWkbToGeos();
+    }
   if (geometry->mGeos == NULL)
-    geometry->exportWkbToGeos();
+    {
+      geometry->exportWkbToGeos();
+    }
+  if(!mGeos || !geometry->mGeos)
+    {
+      return 0;
+    }
   GEOS_GEOM::Geometry* geos = mGeos->intersection(geometry->mGeos);
   QgsGeometry* g = new QgsGeometry;
   g->setGeos(geos);
@@ -5078,11 +5100,21 @@
 QgsGeometry* QgsGeometry::Union(QgsGeometry* geometry)
 {
   if (geometry == NULL)
-    return NULL;
+    {
+      return NULL;
+    }
   if (mGeos == NULL)
-    exportWkbToGeos();
+    {
+      exportWkbToGeos();
+    }
   if (geometry->mGeos == NULL)
-    geometry->exportWkbToGeos();
+    {
+      geometry->exportWkbToGeos();
+    }
+  if(!mGeos || !geometry->mGeos)
+    {
+      return 0;
+    }
   GEOS_GEOM::Geometry* geos = mGeos->Union(geometry->mGeos);
   QgsGeometry* g = new QgsGeometry;
   g->setGeos(geos);
@@ -5092,11 +5124,21 @@
 QgsGeometry* QgsGeometry::difference(QgsGeometry* geometry)
 {
   if (geometry == NULL)
-    return NULL;
+    {
+      return NULL;
+    }
   if (mGeos == NULL)
-    exportWkbToGeos();
+    {
+      exportWkbToGeos();
+    }
   if (geometry->mGeos == NULL)
-    geometry->exportWkbToGeos();
+    {
+      geometry->exportWkbToGeos();
+    }
+  if(!mGeos || !geometry->mGeos)
+    {
+      return 0;
+    }
   GEOS_GEOM::Geometry* geos = mGeos->difference(geometry->mGeos);
   QgsGeometry* g = new QgsGeometry;
   g->setGeos(geos);
@@ -5106,11 +5148,21 @@
 QgsGeometry* QgsGeometry::symDifference(QgsGeometry* geometry)
 {
   if (geometry == NULL)
-    return NULL;
+    {
+      return NULL;
+    }
   if (mGeos == NULL)
-    exportWkbToGeos();
+    {
+      exportWkbToGeos();
+    }
   if (geometry->mGeos == NULL)
-    geometry->exportWkbToGeos();
+    {
+      geometry->exportWkbToGeos();
+    }
+  if(!mGeos || !geometry->mGeos)
+    {
+      return 0;
+    }
   GEOS_GEOM::Geometry* geos = mGeos->symDifference(geometry->mGeos);
   QgsGeometry* g = new QgsGeometry;
   g->setGeos(geos);



More information about the QGIS-commit mailing list