[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