From 27fec1bbb076a11ac6139cb41456cd02ea25b02a Mon Sep 17 00:00:00 2001 From: Dave Cramer Date: Tue, 26 Jul 2022 08:01:30 -0400 Subject: [PATCH 2/2] allocate the correct amount of memory in permanent storage --- src/backend/utils/misc/guc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index f8bdfcffe5..255e541d55 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -12952,10 +12952,14 @@ assign_format_binary(const char *newval, void *extra) char *tmp = palloc(strlen(newval)); strcpy(tmp, newval); + + /* Must save OID list in permanent storage. */ + MemoryContext oldcxt = MemoryContextSwitchTo(TopMemoryContext); + // unlikely to have more than 16 int length = 16; // +1 for the InvalidOid marker at the end - Oid *tmpOids = palloc(length+1); + Oid *tmpOids = palloc(sizeof(Oid)*(length+1)); int i = 0; char *token = strtok(tmp, ","); @@ -12966,12 +12970,13 @@ assign_format_binary(const char *newval, void *extra) if (i > length) { length += 16; - tmpOids = repalloc(tmpOids, length+1); + tmpOids = repalloc(tmpOids, sizeof(Oid)*(length+1)); } token = strtok(NULL, ","); } tmpOids[i] = InvalidOid; binary_format_oids = tmpOids; + MemoryContextSwitchTo(oldcxt); } -- 2.32.1 (Apple Git-133)