diff --git a/meos/src/general/type_out.c b/meos/src/general/type_out.c
index c3cadb057..350ca30fe 100644
--- a/meos/src/general/type_out.c
+++ b/meos/src/general/type_out.c
@@ -848,7 +848,7 @@ tsequenceset_mfjson_size(const TSequenceSet *ss, bool isgeo, bool hasz,
   size += ( isgeo ? sizeof("{'coordinates':[],") : sizeof("{'values':[],") ) * ss->count;
   size += sizeof("'datetimes':[],'lower_inc':false,'upper_inc':false},") * ss->count;
   if (isgeo)
-    size = coordinates_mfjson_size(ss->totalcount, hasz, precision);
+    size += coordinates_mfjson_size(ss->totalcount, hasz, precision);
   else
   {
     for (int i = 0; i < ss->count; i++)
diff --git a/mobilitydb/src/npoint/tnpoint_gin.c b/mobilitydb/src/npoint/tnpoint_gin.c
index d011aa535..de9441447 100644
--- a/mobilitydb/src/npoint/tnpoint_gin.c
+++ b/mobilitydb/src/npoint/tnpoint_gin.c
@@ -75,9 +75,9 @@ Tnpoint_gin_extract_value(PG_FUNCTION_ARGS)
   Datum *elems = palloc(sizeof(Datum) * routes->count);
   for (int i = 0; i < routes->count; i++)
     elems[i] = Int64GetDatum(SET_VAL_N(routes, i));
-  pfree(routes);
   *nkeys = routes->count;
   *nullFlags = NULL;
+  pfree(routes);
   PG_FREE_IF_COPY(temp, 0);
   PG_RETURN_POINTER(elems);
 }
@@ -127,9 +127,9 @@ Tnpoint_gin_extract_query(PG_FUNCTION_ARGS)
       elems = palloc(sizeof(Datum) * routes->count);
       for (int i = 0; i < routes->count; i++)
         elems[i] = Int64GetDatum(SET_VAL_N(routes, i));
-      pfree(routes);
       *nkeys = routes->count;
       *searchMode = GIN_SEARCH_MODE_DEFAULT;
+      pfree(routes);
       PG_FREE_IF_COPY(temp, 0);
       break;
     default:
diff --git a/postgis/liblwgeom/lwhomogenize.c b/postgis/liblwgeom/lwhomogenize.c
index 70c39e9ee..ac20ab7a7 100644
--- a/postgis/liblwgeom/lwhomogenize.c
+++ b/postgis/liblwgeom/lwhomogenize.c
@@ -101,7 +101,7 @@ lwcollection_build_buffer(const LWCOLLECTION *col, HomogenizeBuffer *buffer)
 				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 @@ lwgeom_homogenize(const LWGEOM *geom)
 			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 @@ lwgeom_homogenize(const LWGEOM *geom)
 		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 @@ lwgeom_homogenize(const LWGEOM *geom)
 			/* 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 @@ lwgeom_homogenize(const LWGEOM *geom)
 			}
 
 			/* Return proper multigeometry untouched */
-			return lwgeom_clone(geom);
+			return lwgeom_clone_deep(geom);
 		}
 
 		/* Work on anonymous collections separately */
