]> granicus.if.org Git - postgis/commitdiff
Fix ST_LineToCurve with input having less than 4 vertices (#2412)
authorSandro Santilli <strk@keybit.net>
Sun, 11 Aug 2013 08:40:30 +0000 (08:40 +0000)
committerSandro Santilli <strk@keybit.net>
Sun, 11 Aug 2013 08:40:30 +0000 (08:40 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@11765 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/lwsegmentize.c
regress/tickets.sql
regress/tickets_expected

index b0144af64ca795dd5ae2c6ec89ac753b745c5d20..4fa9671b96404f565f6bf871cbb339bab4326042 100644 (file)
@@ -669,7 +669,8 @@ lwline_desegmentize(LWLINE *line)
 {
        LWDEBUG(2, "lwline_desegmentize called.");
 
-       return pta_desegmentize(line->points, line->flags, line->srid);
+       if ( line->points->npoints < 4 ) return lwline_as_lwgeom(lwline_clone(line));
+       else return pta_desegmentize(line->points, line->flags, line->srid);
 }
 
 LWGEOM *
index 9ef843a00d6a5ffa1f5e156dc7f6fe2d2e1379cd..d58ee794c6a7f8941c18edb85b7c2b117884ffda 100644 (file)
@@ -829,5 +829,7 @@ SELECT '#2415.2', ST_AsText(ST_Multi(
   'CURVEPOLYGON(CIRCULARSTRING(10 0,15 1,20 0,18 5,20 10,10 10,10 0))'
 ));
 
+SELECT '#2412', ST_AsText(ST_LineToCurve('LINESTRING(0 0,10 0,20 0)'));
+
 -- Clean up
 DELETE FROM spatial_ref_sys;
index 80fe3d652038299909b651245188d5a1ea11dc00..1084bae7c6a8a310e7fbb57af2fbf6a4e36abca2 100644 (file)
@@ -246,3 +246,4 @@ ERROR:  invalid GML representation
 #2307|MULTIPOLYGON(((-41.1932 -7.3257,-41.1616 -7.3257,-41.1569 -7.3257,-41.1569 -7.3483,-41.1932 -7.3483,-41.1932 -7.3257),(-41.1616 -7.3257,-41.1879 -7.3257,-41.1879 -7.3425,-41.1616 -7.3425,-41.1616 -7.3257)))
 #2415.1|MULTICURVE(COMPOUNDCURVE((0 0,10 0),CIRCULARSTRING(10 0,15 1,20 10)))
 #2415.2|MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(10 0,15 1,20 0,18 5,20 10,10 10,10 0)))
+#2412|LINESTRING(0 0,10 0,20 0)