mirror of
https://github.com/postgres/postgres.git
synced 2025-05-26 18:17:33 +03:00
plperl: Fix memory leak in hek2cstr
Backpatch all the way back to 9.1, where it was introduced by commit 50d89d42. Reported by Sergey Burladyan in #9223 Author: Alex Hunsaker
This commit is contained in:
parent
3205d6b24e
commit
ba5946e869
@ -304,6 +304,16 @@ static char *setlocale_perl(int category, char *locale);
|
|||||||
static char *
|
static char *
|
||||||
hek2cstr(HE *he)
|
hek2cstr(HE *he)
|
||||||
{
|
{
|
||||||
|
char *ret;
|
||||||
|
SV *sv;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HeSVKEY_force will return a temporary mortal SV*, so we need to make
|
||||||
|
* sure to free it with ENTER/SAVE/FREE/LEAVE
|
||||||
|
*/
|
||||||
|
ENTER;
|
||||||
|
SAVETMPS;
|
||||||
|
|
||||||
/*-------------------------
|
/*-------------------------
|
||||||
* Unfortunately, while HeUTF8 is true for most things > 256, for values
|
* Unfortunately, while HeUTF8 is true for most things > 256, for values
|
||||||
* 128..255 it's not, but perl will treat them as unicode code points if
|
* 128..255 it's not, but perl will treat them as unicode code points if
|
||||||
@ -328,11 +338,17 @@ hek2cstr(HE *he)
|
|||||||
* right thing
|
* right thing
|
||||||
*-------------------------
|
*-------------------------
|
||||||
*/
|
*/
|
||||||
SV *sv = HeSVKEY_force(he);
|
|
||||||
|
|
||||||
|
sv = HeSVKEY_force(he);
|
||||||
if (HeUTF8(he))
|
if (HeUTF8(he))
|
||||||
SvUTF8_on(sv);
|
SvUTF8_on(sv);
|
||||||
return sv2cstr(sv);
|
ret = sv2cstr(sv);
|
||||||
|
|
||||||
|
/* free sv */
|
||||||
|
FREETMPS;
|
||||||
|
LEAVE;
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user