diff options
-rw-r--r-- | src/backend/utils/adt/array_userfuncs.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/arrayfuncs.c | 14 | ||||
-rw-r--r-- | src/backend/utils/adt/geo_ops.c | 6 |
3 files changed, 14 insertions, 8 deletions
diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c index 3fab490da88..6bc35a726c1 100644 --- a/src/backend/utils/adt/array_userfuncs.c +++ b/src/backend/utils/adt/array_userfuncs.c @@ -375,7 +375,7 @@ array_cat(PG_FUNCTION_ARGS) dataoffset = 0; /* marker for no null bitmap */ nbytes = ndatabytes + ARR_OVERHEAD_NONULLS(ndims); } - result = (ArrayType *) palloc(nbytes); + result = (ArrayType *) palloc0(nbytes); result->size = nbytes; result->ndim = ndims; result->dataoffset = dataoffset; diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index 21335ce5665..a444a7d0556 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -1278,7 +1278,7 @@ array_recv(PG_FUNCTION_ARGS) dataoffset = 0; /* marker for no null bitmap */ nbytes += ARR_OVERHEAD_NONULLS(ndim); } - retval = (ArrayType *) palloc(nbytes); + retval = (ArrayType *) palloc0(nbytes); retval->size = nbytes; retval->ndim = ndim; retval->dataoffset = dataoffset; @@ -1878,7 +1878,7 @@ array_get_slice(ArrayType *array, bytes += ARR_OVERHEAD_NONULLS(ndim); } - newarray = (ArrayType *) palloc(bytes); + newarray = (ArrayType *) palloc0(bytes); newarray->size = bytes; newarray->ndim = ndim; newarray->dataoffset = dataoffset; @@ -2131,7 +2131,7 @@ array_set(ArrayType *array, /* * OK, create the new array and fill in header/dimensions */ - newarray = (ArrayType *) palloc(newsize); + newarray = (ArrayType *) palloc0(newsize); newarray->size = newsize; newarray->ndim = ndim; newarray->dataoffset = newhasnulls ? overheadlen : 0; @@ -2461,7 +2461,7 @@ array_set_slice(ArrayType *array, newsize = overheadlen + olddatasize - olditemsize + newitemsize; - newarray = (ArrayType *) palloc(newsize); + newarray = (ArrayType *) palloc0(newsize); newarray->size = newsize; newarray->ndim = ndim; newarray->dataoffset = newhasnulls ? overheadlen : 0; @@ -2720,7 +2720,7 @@ array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType, dataoffset = 0; /* marker for no null bitmap */ nbytes += ARR_OVERHEAD_NONULLS(ndim); } - result = (ArrayType *) palloc(nbytes); + result = (ArrayType *) palloc0(nbytes); result->size = nbytes; result->ndim = ndim; result->dataoffset = dataoffset; @@ -2856,7 +2856,7 @@ construct_md_array(Datum *elems, dataoffset = 0; /* marker for no null bitmap */ nbytes += ARR_OVERHEAD_NONULLS(ndims); } - result = (ArrayType *) palloc(nbytes); + result = (ArrayType *) palloc0(nbytes); result->size = nbytes; result->ndim = ndims; result->dataoffset = dataoffset; @@ -2880,7 +2880,7 @@ construct_empty_array(Oid elmtype) { ArrayType *result; - result = (ArrayType *) palloc(sizeof(ArrayType)); + result = (ArrayType *) palloc0(sizeof(ArrayType)); result->size = sizeof(ArrayType); result->ndim = 0; result->dataoffset = 0; diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c index 1c0552371ed..b4d5a82f65a 100644 --- a/src/backend/utils/adt/geo_ops.c +++ b/src/backend/utils/adt/geo_ops.c @@ -1476,6 +1476,8 @@ path_recv(PG_FUNCTION_ARGS) path->size = size; path->npts = npts; path->closed = (closed ? 1 : 0); + /* prevent instability in unused pad bytes */ + path->dummy = 0; for (i = 0; i < npts; i++) { @@ -4090,6 +4092,8 @@ path_add(PG_FUNCTION_ARGS) result->size = size; result->npts = (p1->npts + p2->npts); result->closed = p1->closed; + /* prevent instability in unused pad bytes */ + result->dummy = 0; for (i = 0; i < p1->npts; i++) { @@ -4323,6 +4327,8 @@ poly_path(PG_FUNCTION_ARGS) path->size = size; path->npts = poly->npts; path->closed = TRUE; + /* prevent instability in unused pad bytes */ + path->dummy = 0; for (i = 0; i < poly->npts; i++) { |