From 0392f650f53f3f1316d2f9e235ea5884a954050d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicklas=20Av=C3=A9n?= Date: Fri, 10 Oct 2014 09:23:26 +0000 Subject: [PATCH] Fix for #2956 Thanks strk git-svn-id: http://svn.osgeo.org/postgis/trunk@13054 b70326c6-7e19-0410-871a-916f4a2858ee --- postgis/lwgeom_inout.c | 7 ++++++- regress/tickets.sql | 1 + regress/tickets_expected | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/postgis/lwgeom_inout.c b/postgis/lwgeom_inout.c index fa2904584..7a0045d9e 100644 --- a/postgis/lwgeom_inout.c +++ b/postgis/lwgeom_inout.c @@ -429,7 +429,7 @@ Datum WKBFromLWGEOM(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(TWKBFromLWGEOM); Datum TWKBFromLWGEOM(PG_FUNCTION_ARGS) { - GSERIALIZED *geom = (GSERIALIZED*)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + GSERIALIZED *geom; LWGEOM *lwgeom; uint8_t *twkb; size_t twkb_size; @@ -438,6 +438,11 @@ Datum TWKBFromLWGEOM(PG_FUNCTION_ARGS) int64_t id; int prec; + /*check for null input since we cannot have the sql-function as strict. + That is because we use null as default for optional ID*/ + if ( PG_ARGISNULL(0) ) PG_RETURN_NULL(); + geom = (GSERIALIZED*)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + /* If user specified precision, respect it */ if ( (PG_NARGS()>1) && (!PG_ARGISNULL(1)) ) { diff --git a/regress/tickets.sql b/regress/tickets.sql index d869055e9..0dab8e3d5 100644 --- a/regress/tickets.sql +++ b/regress/tickets.sql @@ -882,5 +882,6 @@ SELECT '#2788', valid, reason, ST_AsText(location) from ST_IsValidDetail('POLYGO SELECT '#2870', ST_Summary('Point(151.215289 -33.856885)'::geometry::bytea::geography) ; +SELECT '#2956', st_astwkb(null,0) is null; -- Clean up DELETE FROM spatial_ref_sys; diff --git a/regress/tickets_expected b/regress/tickets_expected index 4b3524476..514e22e17 100644 --- a/regress/tickets_expected +++ b/regress/tickets_expected @@ -260,3 +260,4 @@ ERROR: invalid GML representation #2712|LINESTRING EMPTY #2788|f|Self-intersection|POINT(1 1) #2870|Point[GS] +#2956|t -- 2.50.1