summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Davis2022-12-01 19:26:32 +0000
committerJeff Davis2022-12-01 19:49:15 +0000
commitedf12e7bbd0f5cf6b3c4f4d6b2dad8586b10dcc6 (patch)
tree08ddea0f9c7293749dccd50bd9915601fc2d149c
parenta109a0bb50ad47812b8818e9c98e4f311672d659 (diff)
Fix memory leak for hashing with nondeterministic collations.
Backpatch through 12, where nondeterministic collations were introduced (5e1963fb76). Backpatch-through: 12
-rw-r--r--src/backend/access/hash/hashfunc.c2
-rw-r--r--src/backend/utils/adt/varchar.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/src/backend/access/hash/hashfunc.c b/src/backend/access/hash/hashfunc.c
index b57ed946c4..f890f79ee1 100644
--- a/src/backend/access/hash/hashfunc.c
+++ b/src/backend/access/hash/hashfunc.c
@@ -303,6 +303,7 @@ hashtext(PG_FUNCTION_ARGS)
buf = palloc(bsize);
ucol_getSortKey(mylocale->info.icu.ucol,
uchar, ulen, buf, bsize);
+ pfree(uchar);
result = hash_any(buf, bsize);
@@ -360,6 +361,7 @@ hashtextextended(PG_FUNCTION_ARGS)
buf = palloc(bsize);
ucol_getSortKey(mylocale->info.icu.ucol,
uchar, ulen, buf, bsize);
+ pfree(uchar);
result = hash_any_extended(buf, bsize, PG_GETARG_INT64(1));
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 68e2e6f7a7..09c483d6ff 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -1031,6 +1031,7 @@ hashbpchar(PG_FUNCTION_ARGS)
buf = palloc(bsize);
ucol_getSortKey(mylocale->info.icu.ucol,
uchar, ulen, buf, bsize);
+ pfree(uchar);
result = hash_any(buf, bsize);
@@ -1092,6 +1093,7 @@ hashbpcharextended(PG_FUNCTION_ARGS)
buf = palloc(bsize);
ucol_getSortKey(mylocale->info.icu.ucol,
uchar, ulen, buf, bsize);
+ pfree(uchar);
result = hash_any_extended(buf, bsize, PG_GETARG_INT64(1));