From ae22d6192d669d19abc48ef7dba3f961a413798b Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 16 Jan 2012 10:31:18 +0000 Subject: [PATCH] Fix reading TRIANGLE EMPTY in WKB form (#1474) git-svn-id: http://svn.osgeo.org/postgis/trunk@8833 b70326c6-7e19-0410-871a-916f4a2858ee --- liblwgeom/lwin_wkb.c | 4 ++++ regress/wkb.sql | 22 ++++++++++++++++++++++ regress/wkb_expected | 4 ++++ 3 files changed, 30 insertions(+) diff --git a/liblwgeom/lwin_wkb.c b/liblwgeom/lwin_wkb.c index dcb6a2a00..ca3b4cde6 100644 --- a/liblwgeom/lwin_wkb.c +++ b/liblwgeom/lwin_wkb.c @@ -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); diff --git a/regress/wkb.sql b/regress/wkb.sql index 962543af4..a3c581cbb 100644 --- a/regress/wkb.sql +++ b/regress/wkb.sql @@ -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; + diff --git a/regress/wkb_expected b/regress/wkb_expected index e29b6f0c9..8821f5c2b 100644 --- a/regress/wkb_expected +++ b/regress/wkb_expected @@ -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 -- 2.50.1