Commit b48ecf86 authored by Robert Haas's avatar Robert Haas

In bttext_abbrev_convert, move pfree to the right place.

Without this, we might access memory that's already been freed, or
leak memory if in the C locale.

Peter Geoghegan
parent 47fe4d25
......@@ -2034,13 +2034,9 @@ bttext_abbrev_convert(Datum original, SortSupport ssup)
}
/* Just like strcoll(), strxfrm() expects a NUL-terminated string */
memcpy(tss->buf1, VARDATA_ANY(authoritative), len);
memcpy(tss->buf1, authoritative_data, len);
tss->buf1[len] = '\0';
/* Don't leak memory here */
if (PointerGetDatum(authoritative) != original)
pfree(authoritative);
for (;;)
{
#ifdef HAVE_LOCALE_T
......@@ -2108,6 +2104,10 @@ bttext_abbrev_convert(Datum original, SortSupport ssup)
addHyperLogLog(&tss->abbr_card, hash);
/* Don't leak memory here */
if (PointerGetDatum(authoritative) != original)
pfree(authoritative);
return res;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment