Description: Use clone_deep in lwhomogenize (patched in postgis 3.4)
Author: Maxime Schoemans <maxime.schoemans@ulb.be>
Origin: upstream, https://github.com/MobilityDB/MobilityDB/commit/dacd0919b2917f3a221a86bab95505849ae098e8
Last-Update: 2024-04-19
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/postgis/liblwgeom/lwhomogenize.c
+++ b/postgis/liblwgeom/lwhomogenize.c
@@ -101,7 +101,7 @@
 				buffer->buf[geom->type] = bufcol;
 			}
 			/* Add sub-geom to buffer */
-			lwcollection_add_lwgeom(buffer->buf[geom->type], lwgeom_clone(geom));
+			lwcollection_add_lwgeom(buffer->buf[geom->type], lwgeom_clone_deep(geom));
 			/* Increment count for this singleton type */
 			buffer->cnt[geom->type]++;
 			break;
@@ -217,7 +217,7 @@
 			return lwcollection_as_lwgeom(lwcollection_construct_empty(geom->type, geom->srid, lwgeom_has_z(geom), lwgeom_has_m(geom)));
 		}
 
-		return lwgeom_clone(geom);
+		return lwgeom_clone_deep(geom);
 	}
 
 	switch (geom->type)
@@ -231,7 +231,7 @@
 		case TRIANGLETYPE:
 		case CURVEPOLYTYPE:
 		case POLYGONTYPE:
-			return lwgeom_clone(geom);
+			return lwgeom_clone_deep(geom);
 
 		/* Process homogeneous geometries lightly */
 		case MULTIPOINTTYPE:
@@ -247,7 +247,6 @@
 			/* Strip single-entry multi-geometries down to singletons */
 			if ( col->ngeoms == 1 )
 			{
-				// hgeom = lwgeom_clone((LWGEOM*)(col->geoms[0])); // MobilityDB changed
 				hgeom = lwgeom_clone_deep((LWGEOM*)(col->geoms[0]));
 				hgeom->srid = geom->srid;
 				if (geom->bbox)
@@ -256,7 +255,7 @@
 			}
 
 			/* Return proper multigeometry untouched */
-			return lwgeom_clone(geom);
+			return lwgeom_clone_deep(geom);
 		}
 
 		/* Work on anonymous collections separately */
