File tree Expand file tree Collapse file tree 1 file changed +18
-2
lines changed Expand file tree Collapse file tree 1 file changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -304,6 +304,16 @@ static char *setlocale_perl(int category, char *locale);
304304static char *
305305hek2cstr (HE * he )
306306{
307+ char * ret ;
308+ SV * sv ;
309+
310+ /*
311+ * HeSVKEY_force will return a temporary mortal SV*, so we need to make
312+ * sure to free it with ENTER/SAVE/FREE/LEAVE
313+ */
314+ ENTER ;
315+ SAVETMPS ;
316+
307317 /*-------------------------
308318 * Unfortunately, while HeUTF8 is true for most things > 256, for values
309319 * 128..255 it's not, but perl will treat them as unicode code points if
@@ -328,11 +338,17 @@ hek2cstr(HE *he)
328338 * right thing
329339 *-------------------------
330340 */
331- SV * sv = HeSVKEY_force (he );
332341
342+ sv = HeSVKEY_force (he );
333343 if (HeUTF8 (he ))
334344 SvUTF8_on (sv );
335- return sv2cstr (sv );
345+ ret = sv2cstr (sv );
346+
347+ /* free sv */
348+ FREETMPS ;
349+ LEAVE ;
350+
351+ return ret ;
336352}
337353
338354/*
You can’t perform that action at this time.
0 commit comments