[SCM] PostGIS branch stable-3.2 updated. 3.2.7-36-g51584a59c
git at osgeo.org
git at osgeo.org
Thu Jun 5 00:56:44 PDT 2025
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".
The branch, stable-3.2 has been updated
via 51584a59c468c982ecb7d3f8d77ec5a834e3c194 (commit)
from 25b708f667c6f10655d75eaa2b51eb3d051afe8e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 51584a59c468c982ecb7d3f8d77ec5a834e3c194
Author: Sandro Santilli <strk at kbt.io>
Date: Thu Jun 5 09:15:12 2025 +0200
Fix crash on TopoGeo_addLineString(empty)
References #5922 in 3.2 branch (3.2.9dev)
diff --git a/NEWS b/NEWS
index 1b125c45d..6e4009914 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,7 @@ Proj 4.9+ required.
* Bug Fixes *
+ - #5922, [topology] Fix crash in TopoGeo_AddLinestring with EMPTY input (Sandro Santilli)
- #5908, [topology] Fix crash in GetFaceContainingPoint (Sandro Santilli)
- #5907, [topology] Fix crash in TopoGeo_AddPolygon with EMPTY input (Sandro Santilli)
- #5876, Fix ST_AddPoint with empty point argument (Paul Ramsey)
diff --git a/liblwgeom/lwgeom_topo.c b/liblwgeom/lwgeom_topo.c
index 7d621f305..f7a00f380 100644
--- a/liblwgeom/lwgeom_topo.c
+++ b/liblwgeom/lwgeom_topo.c
@@ -5682,6 +5682,12 @@ _lwt_AddLine(LWT_TOPOLOGY* topo, LWLINE* line, double tol, int* nedges,
int input_was_closed = 0;
POINT4D originalStartPoint;
+ if ( lwline_is_empty(line) )
+ {
+ *nedges = 0;
+ return NULL;
+ }
+
if ( lwline_is_closed(line) )
{
input_was_closed = 1;
diff --git a/topology/postgis_topology.c b/topology/postgis_topology.c
index aca7a07a4..2379463ad 100644
--- a/topology/postgis_topology.c
+++ b/topology/postgis_topology.c
@@ -4985,6 +4985,13 @@ Datum TopoGeo_AddLinestring(PG_FUNCTION_ARGS)
PG_RETURN_NULL();
}
}
+ /* Nothing to do if line is empty */
+ if ( lwline_is_empty(ln) )
+ {
+ lwgeom_free(lwgeom);
+ PG_FREE_IF_COPY(geom, 1);
+ PG_RETURN_NULL();
+ }
tol = PG_GETARG_FLOAT8(2);
if ( tol < 0 )
diff --git a/topology/test/regress/topogeo_addlinestring.sql b/topology/test/regress/topogeo_addlinestring.sql
index b0e904b7e..415733548 100644
--- a/topology/test/regress/topogeo_addlinestring.sql
+++ b/topology/test/regress/topogeo_addlinestring.sql
@@ -58,6 +58,7 @@ $$ LANGUAGE 'plpgsql';
SELECT 'invalid', TopoGeo_addLineString('city_data', 'SRID=4326;MULTILINESTRING((36 26, 38 30))');
SELECT 'invalid', TopoGeo_addLineString('city_data', 'SRID=4326;POINT(36 26)');
SELECT 'invalid', TopoGeo_addLineString('invalid', 'SRID=4326;LINESTRING(36 26, 0 0)');
+SELECT 'empty', TopoGeo_addLineString('city_data', 'SRID=4326;LINESTRING EMPTY');
-- Isolated edge in universal face
SELECT 'iso_uni', TopoGeo_addLineString('city_data', 'SRID=4326;LINESTRING(36 26, 38 30)');
diff --git a/topology/test/regress/topogeo_addlinestring_expected b/topology/test/regress/topogeo_addlinestring_expected
index 6b433feae..1a526208c 100644
--- a/topology/test/regress/topogeo_addlinestring_expected
+++ b/topology/test/regress/topogeo_addlinestring_expected
@@ -3,6 +3,7 @@ max|edge|26
ERROR: Invalid geometry type (MULTILINESTRING) passed to TopoGeo_AddLinestring, expected LINESTRING
ERROR: Invalid geometry type (POINT) passed to TopoGeo_AddLinestring, expected LINESTRING
ERROR: No topology with name "invalid" in topology.topology
+empty|
iso_uni|27
iso_uni|N||POINT(36 26)
iso_uni|N||POINT(38 30)
-----------------------------------------------------------------------
Summary of changes:
NEWS | 1 +
liblwgeom/lwgeom_topo.c | 6 ++++++
topology/postgis_topology.c | 7 +++++++
topology/test/regress/topogeo_addlinestring.sql | 1 +
topology/test/regress/topogeo_addlinestring_expected | 1 +
5 files changed, 16 insertions(+)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list