From: Nicklas Avén Date: Fri, 10 Oct 2014 09:23:26 +0000 (+0000) Subject: Fix for #2956 Thanks strk X-Git-Tag: 2.2.0rc1~795 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0392f650f53f3f1316d2f9e235ea5884a954050d;p=postgis Fix for #2956 Thanks strk git-svn-id: http://svn.osgeo.org/postgis/trunk@13054 b70326c6-7e19-0410-871a-916f4a2858ee --- 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