Skip to content

Commit cd4a22e

Browse files
committed
:utf8 - free the memory allocated by PerlIOUnicode_pushed()
1 parent c74a57b commit cd4a22e

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

perlio.c

+15-1
Original file line numberDiff line numberDiff line change
@@ -5220,6 +5220,20 @@ PerlIOUnicode_pushed(pTHX_ PerlIO* f, const char* mode, SV* arg, PerlIO_funcs* t
52205220
return -1;
52215221
}
52225222

5223+
IV
5224+
PerlIOUnicode_popped(pTHX_ PerlIO *f)
5225+
{
5226+
const IV code = PerlIOBuf_popped(aTHX_ f);
5227+
PerlIOUnicode * const u = PerlIOSelf(f, PerlIOUnicode);
5228+
if (u->leftovers) {
5229+
Safefree(u->leftovers);
5230+
u->leftovers = NULL;
5231+
}
5232+
PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF);
5233+
5234+
return code;
5235+
}
5236+
52235237
/* Warn (or croak) any messages generated while processing
52245238
unicode.
52255239
@@ -5635,7 +5649,7 @@ PerlIOUnicode_seek(pTHX_ PerlIO *f, Off_t offset, int whence)
56355649
sizeof(PerlIOUnicode),
56365650
PERLIO_K_BUFFERED|PERLIO_K_UTF8,
56375651
PerlIOUnicode_pushed,
5638-
PerlIOBuf_popped,
5652+
PerlIOUnicode_popped,
56395653
PerlIOBuf_open,
56405654
PerlIOBase_binmode,
56415655
NULL,

0 commit comments

Comments
 (0)