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 */