From: Jeff Davis Date: Fri, 24 Mar 2023 15:47:51 +0000 (-0700) Subject: Avoid potential UCollator leak for older ICU versions. X-Git-Tag: REL_16_BETA1~435 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=a03b3b6b4a7275a66e38280f49fddb9aec8dff3d;p=postgresql.git Avoid potential UCollator leak for older ICU versions. ICU versions 53 and earlier rely on icu_set_collation_attributes() to process the attributes in the locale string. Avoid leaking the already-opened UCollator object if an error is encountered. Discussion: https://postgr.es/m/04182066-7655-344a-b8b7-040b1b2490fb%40enterprisedb.com Reviewed-by: Peter Eisentraut --- diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index 41b0e9fe691..386768ee767 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -2810,9 +2810,12 @@ icu_set_collation_attributes(UCollator *collator, const char *loc) * message across ICU versions. */ if (U_FAILURE(status)) + { + ucol_close(collator); ereport(ERROR, (errmsg("could not open collator for locale \"%s\": %s", loc, u_errorName(status)))); + } } }