Hello, in src/backend/utils/adt/formatting.c, in icu_convert_case() I see: if (status == U_BUFFER_OVERFLOW_ERROR) { /* try again with adjusted length */ pfree(*buff_dest); *buff_dest = palloc(len_dest * sizeof(**buff_dest)); ...
Is there any reason why this should not be repalloc()? In case it should be, I've attached a corresponding patch. -- Anton Voloshin Postgres Professional: https://www.postgrespro.com Russian Postgres Company
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 783c7b5e7a..409067e4a0 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1588,8 +1588,7 @@ icu_convert_case(ICU_Convert_Func func, pg_locale_t mylocale, if (status == U_BUFFER_OVERFLOW_ERROR) { /* try again with adjusted length */ - pfree(*buff_dest); - *buff_dest = palloc(len_dest * sizeof(**buff_dest)); + *buff_dest = repalloc(*buff_dest, len_dest * sizeof(**buff_dest)); status = U_ZERO_ERROR; len_dest = func(*buff_dest, len_dest, buff_source, len_source, mylocale->info.icu.locale, &status);