]> granicus.if.org Git - postgis/commitdiff
Fix reading TRIANGLE EMPTY in WKB form (#1474)
authorSandro Santilli <strk@keybit.net>
Mon, 16 Jan 2012 10:31:18 +0000 (10:31 +0000)
committerSandro Santilli <strk@keybit.net>
Mon, 16 Jan 2012 10:31:18 +0000 (10:31 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8833 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/lwin_wkb.c
regress/wkb.sql
regress/wkb_expected

index dcb6a2a0090a5e78898cba685b5daec2c0b4ce16..ca3b4cde62da85e83082a3f450d48940f9fac33d 100644 (file)
@@ -505,6 +505,10 @@ static LWTRIANGLE* lwtriangle_from_wkb_state(wkb_parse_state *s)
        LWTRIANGLE *tri = lwtriangle_construct_empty(s->srid, s->has_z, s->has_m);
        POINTARRAY *pa = NULL;
 
+       /* Empty triangle? */
+       if( nrings == 0 )
+               return tri;
+
        /* Should be only one ring. */
        if ( nrings != 1 )
                lwerror("Triangle has wrong number of rings: %d", nrings);
index 962543af489cd0370e01154e5e7f242ebbe8f680..a3c581cbbc4dcc50bb56f39bec551661a2cc6c85 100644 (file)
@@ -414,3 +414,25 @@ select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
  'POLYHEDRALSURFACE ZM EMPTY'
 ::text as g ) as foo;
 
+-- TRIANGLE
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'TRIANGLE EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'TRIANGLE Z EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'TRIANGLE M EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'TRIANGLE ZM EMPTY'
+::text as g ) as foo;
+
index e29b6f0c945fe278e6c27a51a7e3bf87603d4283..8821f5c2b02f0857d27e08cab90439445af78170 100644 (file)
@@ -76,3 +76,7 @@ POLYHEDRALSURFACE EMPTY|010f00000000000000|t|000000000f00000000
 POLYHEDRALSURFACE Z EMPTY|01f703000000000000|t|00000003f700000000
 POLYHEDRALSURFACE M EMPTY|01df07000000000000|t|00000007df00000000
 POLYHEDRALSURFACE ZM EMPTY|01c70b000000000000|t|0000000bc700000000
+TRIANGLE EMPTY|011100000000000000|t|000000001100000000
+TRIANGLE Z EMPTY|01f903000000000000|t|00000003f900000000
+TRIANGLE M EMPTY|01e107000000000000|t|00000007e100000000
+TRIANGLE ZM EMPTY|01c90b000000000000|t|0000000bc900000000