From 2e723cb276f233322a6b4f0c418126cc90aa41b8 Mon Sep 17 00:00:00 2001 From: Paul Ramsey Date: Tue, 24 Jan 2012 22:23:53 +0000 Subject: [PATCH] SVG empty geometries gives invalid memory alloc (#1038) git-svn-id: http://svn.osgeo.org/postgis/trunk@8920 b70326c6-7e19-0410-871a-916f4a2858ee --- liblwgeom/lwout_svg.c | 8 ++++++++ regress/tickets.sql | 2 ++ regress/tickets_expected | 1 + 3 files changed, 11 insertions(+) diff --git a/liblwgeom/lwout_svg.c b/liblwgeom/lwout_svg.c index 651f91984..387a5afe9 100644 --- a/liblwgeom/lwout_svg.c +++ b/liblwgeom/lwout_svg.c @@ -44,6 +44,14 @@ lwgeom_to_svg(const LWGEOM *geom, int precision, int relative) { char *ret = NULL; int type = geom->type; + + /* Empty string for empties */ + if( lwgeom_is_empty(geom) ) + { + ret = lwalloc(1); + ret[0] = '\0'; + return ret; + } switch (type) { diff --git a/regress/tickets.sql b/regress/tickets.sql index 3349b1a60..2dd4d00c0 100644 --- a/regress/tickets.sql +++ b/regress/tickets.sql @@ -569,6 +569,8 @@ insert into spatial_ref_sys (srid, proj4text) values (500001,NULL); insert into spatial_ref_sys (srid, proj4text) values (500002, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'); select '#1150', st_astext(st_transform('SRID=500002;POINT(0 0)',500001)); +-- #1038 +select '#1038', ST_AsSVG('POLYGON EMPTY'::geometry); -- Clean up DELETE FROM spatial_ref_sys; diff --git a/regress/tickets_expected b/regress/tickets_expected index 94f530d89..da97cda37 100644 --- a/regress/tickets_expected +++ b/regress/tickets_expected @@ -185,3 +185,4 @@ ERROR: MultiSurface cannot contain MultiPoint element #852.2|2|t|t #1489|MULTIPOINT EMPTY|0|MULTILINESTRING EMPTY|0|MULTIPOLYGON EMPTY|0|GEOMETRYCOLLECTION EMPTY|0 ERROR: AddToPROJ4SRSCache: couldn't parse proj4 string: '': (null) +#1038| -- 2.40.0