From f143b128d3d356845436a348a9f738e33fcd6935 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Sun, 11 Aug 2013 08:40:30 +0000 Subject: [PATCH] Fix ST_LineToCurve with input having less than 4 vertices (#2412) git-svn-id: http://svn.osgeo.org/postgis/trunk@11765 b70326c6-7e19-0410-871a-916f4a2858ee --- liblwgeom/lwsegmentize.c | 3 ++- regress/tickets.sql | 2 ++ regress/tickets_expected | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/liblwgeom/lwsegmentize.c b/liblwgeom/lwsegmentize.c index b0144af64..4fa9671b9 100644 --- a/liblwgeom/lwsegmentize.c +++ b/liblwgeom/lwsegmentize.c @@ -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 * diff --git a/regress/tickets.sql b/regress/tickets.sql index 9ef843a00..d58ee794c 100644 --- a/regress/tickets.sql +++ b/regress/tickets.sql @@ -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; diff --git a/regress/tickets_expected b/regress/tickets_expected index 80fe3d652..1084bae7c 100644 --- a/regress/tickets_expected +++ b/regress/tickets_expected @@ -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) -- 2.50.1