From fada9d7a8e96e916a96e5e50f3f03ba74cbd5817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= Date: Fri, 4 Nov 2016 12:55:08 +0100 Subject: [PATCH] Clean/fix triangulation internals Drop unused variable Remove commented-out code Fix leak by using Vector instead of raw memory (cherry picked from commit 0e1972aa5165722e677850bbf799af8ab6751a8d) --- core/math/triangulate.cpp | 16 ++++------------ core/math/triangulate.h | 2 +- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/core/math/triangulate.cpp b/core/math/triangulate.cpp index 27b7c866756..5d1d3c79373 100644 --- a/core/math/triangulate.cpp +++ b/core/math/triangulate.cpp @@ -71,7 +71,7 @@ bool Triangulate::is_inside_triangle(float Ax, float Ay, return ((aCROSSbp >= 0.0f) && (bCROSScp >= 0.0f) && (cCROSSap >= 0.0f)); }; -bool Triangulate::snip(const Vector &p_contour,int u,int v,int w,int n,int *V) +bool Triangulate::snip(const Vector &p_contour,int u,int v,int w,int n,const Vector& V) { int p; float Ax, Ay, Bx, By, Cx, Cy, Px, Py; @@ -107,8 +107,8 @@ bool Triangulate::triangulate(const Vector &contour,Vector &result if ( n < 3 ) return false; - - int *V = (int*)alloca(sizeof(int)*n); + Vector V; + V.resize(n); /* we want a counter-clockwise polygon in V */ @@ -122,7 +122,7 @@ bool Triangulate::triangulate(const Vector &contour,Vector &result /* remove nv-2 Vertices, creating 1 triangle every time */ int count = 2*nv; /* error detection */ - for(int m=0, v=nv-1; nv>2; ) + for(int v=nv-1; nv>2; ) { /* if we loop, it is probably a non-simple polygon */ if (0 >= (count--)) @@ -144,18 +144,10 @@ bool Triangulate::triangulate(const Vector &contour,Vector &result a = V[u]; b = V[v]; c = V[w]; /* output Triangle */ - /* - result.push_back( contour[a] ); - result.push_back( contour[b] ); - result.push_back( contour[c] ); -*/ - result.push_back( a ); result.push_back( b ); result.push_back( c ); - m++; - /* remove v from remaining polygon */ for(s=v,t=v+1;t &p_contour,int u,int v,int w,int n,int *V); + static bool snip(const Vector &p_contour,int u,int v,int w,int n,const Vector& V); };