[postgis-tickets] r15620 - #3578, Fix null return for ST_NumInteriorRings on empty polygon
Daniel Baston
dbaston at gmail.com
Sun Sep 3 17:37:56 PDT 2017
Author: dbaston
Date: 2017-09-03 17:37:56 -0700 (Sun, 03 Sep 2017)
New Revision: 15620
Modified:
trunk/postgis/lwgeom_ogc.c
trunk/regress/tickets.sql
trunk/regress/tickets_expected
Log:
#3578, Fix null return for ST_NumInteriorRings on empty polygon
Modified: trunk/postgis/lwgeom_ogc.c
===================================================================
--- trunk/postgis/lwgeom_ogc.c 2017-09-04 00:14:02 UTC (rev 15619)
+++ trunk/postgis/lwgeom_ogc.c 2017-09-04 00:37:56 UTC (rev 15620)
@@ -413,19 +413,32 @@
{
GSERIALIZED *geom = PG_GETARG_GSERIALIZED_P(0);
LWGEOM *lwgeom = lwgeom_from_gserialized(geom);
- LWPOLY *poly = NULL;
- LWCURVEPOLY *curvepoly = NULL;
+
int result = -1;
if ( lwgeom->type == POLYGONTYPE )
{
- poly = lwgeom_as_lwpoly(lwgeom);
- result = poly->nrings - 1;
+ if (lwgeom_is_empty(lwgeom))
+ {
+ result = 0;
+ }
+ else
+ {
+ const LWPOLY *poly = lwgeom_as_lwpoly(lwgeom);
+ result = poly->nrings - 1;
+ }
}
else if ( lwgeom->type == CURVEPOLYTYPE )
{
- curvepoly = lwgeom_as_lwcurvepoly(lwgeom);
- result = curvepoly->nrings - 1;
+ if (lwgeom_is_empty(lwgeom))
+ {
+ result = 0;
+ }
+ else
+ {
+ const LWCURVEPOLY *curvepoly = lwgeom_as_lwcurvepoly(lwgeom);
+ result = curvepoly->nrings - 1;
+ }
}
lwgeom_free(lwgeom);
Modified: trunk/regress/tickets.sql
===================================================================
--- trunk/regress/tickets.sql 2017-09-04 00:14:02 UTC (rev 15619)
+++ trunk/regress/tickets.sql 2017-09-04 00:37:56 UTC (rev 15620)
@@ -980,6 +980,10 @@
SELECT '#3569', ST_CollectionHomogenize(geom)::box2d
FROM clustr;
+-- #3578
+SELECT '#3578a', ST_NumInteriorRings('POLYGON EMPTY');
+SELECT '#3578b', ST_NumInteriorRings('CURVEPOLYGON EMPTY');
+
-- #3579
with
params as (
Modified: trunk/regress/tickets_expected
===================================================================
--- trunk/regress/tickets_expected 2017-09-04 00:14:02 UTC (rev 15619)
+++ trunk/regress/tickets_expected 2017-09-04 00:37:56 UTC (rev 15620)
@@ -296,6 +296,8 @@
#3470|t
#3470b|50
#3569|BOX(1 2,3 4)
+#3578a|0
+#3578b|0
#3579|f|t
#3620a|POINT(3 7)
#3620b|POINT(2 8)
More information about the postgis-tickets
mailing list