aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/array_userfuncs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/array_userfuncs.c')
-rw-r--r--src/backend/utils/adt/array_userfuncs.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c
index c831a9395c6..57bd7e82bc4 100644
--- a/src/backend/utils/adt/array_userfuncs.c
+++ b/src/backend/utils/adt/array_userfuncs.c
@@ -723,12 +723,11 @@ array_agg_deserialize(PG_FUNCTION_ARGS)
sstate = PG_GETARG_BYTEA_PP(0);
/*
- * Copy the bytea into a StringInfo so that we can "receive" it using the
- * standard recv-function infrastructure.
+ * Initialize a StringInfo so that we can "receive" it using the standard
+ * recv-function infrastructure.
*/
- initStringInfo(&buf);
- appendBinaryStringInfo(&buf,
- VARDATA_ANY(sstate), VARSIZE_ANY_EXHDR(sstate));
+ initReadOnlyStringInfo(&buf, VARDATA_ANY(sstate),
+ VARSIZE_ANY_EXHDR(sstate));
/* element_type */
element_type = pq_getmsgint(&buf, 4);
@@ -815,7 +814,6 @@ array_agg_deserialize(PG_FUNCTION_ARGS)
}
pq_getmsgend(&buf);
- pfree(buf.data);
PG_RETURN_POINTER(result);
}
@@ -1124,12 +1122,11 @@ array_agg_array_deserialize(PG_FUNCTION_ARGS)
sstate = PG_GETARG_BYTEA_PP(0);
/*
- * Copy the bytea into a StringInfo so that we can "receive" it using the
- * standard recv-function infrastructure.
+ * Initialize a StringInfo so that we can "receive" it using the standard
+ * recv-function infrastructure.
*/
- initStringInfo(&buf);
- appendBinaryStringInfo(&buf,
- VARDATA_ANY(sstate), VARSIZE_ANY_EXHDR(sstate));
+ initReadOnlyStringInfo(&buf, VARDATA_ANY(sstate),
+ VARSIZE_ANY_EXHDR(sstate));
/* element_type */
element_type = pq_getmsgint(&buf, 4);
@@ -1187,7 +1184,6 @@ array_agg_array_deserialize(PG_FUNCTION_ARGS)
memcpy(result->lbs, temp, sizeof(result->lbs));
pq_getmsgend(&buf);
- pfree(buf.data);
PG_RETURN_POINTER(result);
}