summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2010-10-31 11:50:16 +0000
committerDavid Mitchell <davem@iabyn.com>2010-10-31 11:54:02 +0000
commit64dc9714ea644685eed378d21d3784602e1333e9 (patch)
tree596f50140a33b150ecddf98ccf2de43ee332eb56 /sv.c
parent5dfff8f3f610de1f338ad0c0b33fd879e96e9497 (diff)
downloadperl-64dc9714ea644685eed378d21d3784602e1333e9.tar.gz
RT 72246: rcatline memory leak on bad $/
When allocating a temporary SV, make sure it will get freed if we die.
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sv.c b/sv.c
index 6173b0af04..2d4e2ab31e 100644
--- a/sv.c
+++ b/sv.c
@@ -7338,11 +7338,13 @@ Perl_sv_gets(pTHX_ register SV *const sv, register PerlIO *const fp, I32 append)
}
} else if (SvUTF8(sv)) {
SV * const tsv = newSV(0);
+ ENTER;
+ SAVEFREESV(tsv);
sv_gets(tsv, fp, 0);
sv_utf8_upgrade_nomg(tsv);
SvCUR_set(sv,append);
sv_catsv(sv,tsv);
- sv_free(tsv);
+ LEAVE;
goto return_string_or_null;
}
}