mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-11 19:20:40 +08:00
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
This commit is contained in:
parent
47fe4d25d5
commit
b48ecf862b
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user