From: Sandro Santilli Date: Wed, 6 Jul 2011 07:42:18 +0000 (+0000) Subject: Don't let temporary collection leak in lwgeom_to_x3d3 (actually do, but sligthly... X-Git-Tag: 2.0.0alpha1~1240 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac9b819b9cce7c6ca050a514dc6517acad4021dc;p=postgis Don't let temporary collection leak in lwgeom_to_x3d3 (actually do, but sligthly less, till we fix lwgeom_clone). See #1102. git-svn-id: http://svn.osgeo.org/postgis/trunk@7602 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/liblwgeom/lwout_x3d.c b/liblwgeom/lwout_x3d.c index ff99aee70..ed9c37def 100644 --- a/liblwgeom/lwout_x3d.c +++ b/liblwgeom/lwout_x3d.c @@ -59,10 +59,16 @@ lwgeom_to_x3d3(const LWGEOM *geom, char *srs, int precision, int opts, const cha return asx3d3_line((LWLINE*)geom, srs, precision, opts, defid); case POLYGONTYPE: + { /** We might change this later, but putting a polygon in an indexed face set * seems like the simplest way to go so treat just like a mulitpolygon */ - return asx3d3_multi((LWCOLLECTION*)lwgeom_as_multi(geom), srs, precision, opts, defid); + LWCOLLECTION *tmp = (LWCOLLECTION*)lwgeom_as_multi(geom); + char *ret = asx3d3_multi(tmp, srs, precision, opts, defid); + /* See http://trac.osgeo.org/postgis/ticket/1104 about problems with lwgeom_clone */ + lwcollection_release(tmp); + return ret; + } case TRIANGLETYPE: return asx3d3_triangle((LWTRIANGLE*)geom, srs, precision, opts, defid);