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

svn_qgis at osgeo.org svn_qgis at osgeo.org
Thu Apr 17 03:22:09 EDT 2008


Author: mhugent
Date: 2008-04-17 03:22:08 -0400 (Thu, 17 Apr 2008)
New Revision: 8358

Modified:
   trunk/qgis/src/core/qgsgeometry.cpp
Log:
Fix for crashes when trying to delete a vertex in a polygon ring that has less than 3 vertices (bug 1041)

Modified: trunk/qgis/src/core/qgsgeometry.cpp
===================================================================
--- trunk/qgis/src/core/qgsgeometry.cpp	2008-04-17 05:30:54 UTC (rev 8357)
+++ trunk/qgis/src/core/qgsgeometry.cpp	2008-04-17 07:22:08 UTC (rev 8358)
@@ -1443,9 +1443,10 @@
     case QGis::WKBLineString:
       {
         int* nPoints = (int*)ptr;
-        if((*nPoints) < 3 || vertexnr > (*nPoints)-1 || vertexnr < 0)
+        if((*nPoints) < 3 || vertexnr > (*nPoints)-1 || vertexnr < 0) //line needs at least 2 vertices
         {
-          break;
+	  delete newbuffer;
+          return;
         }
         int newNPoints = (*nPoints)-1; //new number of points
         memcpy(newBufferPtr, &newNPoints, sizeof(int));
@@ -1498,9 +1499,10 @@
           //find out if the vertex is in this line
           if(vertexnr >= pointindex && vertexnr < pointindex + (*nPoints))
           {
-            if(*nPoints < 3)
+            if(*nPoints < 3) //line needs at least 2 vertices
             {
-              break;
+	      delete newbuffer;
+              return false;
             }
             newNPoint = (*nPoints)-1;
           }
@@ -1557,7 +1559,8 @@
           {
             if(*nPoints < 5) //a ring has at least 3 points
             {
-              break;
+	      delete newbuffer;
+              return false;
             }
             newNPoints = *nPoints - 1;
           }
@@ -1634,7 +1637,8 @@
             {
               if(*nPoints < 5) //a ring has at least 3 points
               {
-                break;
+		delete newbuffer;
+                return false;
               }
               newNPoints = *nPoints - 1;
             }



More information about the QGIS-commit mailing list