summaryrefslogtreecommitdiff
path: root/pad.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2012-11-29 22:49:09 -0800
committerFather Chrysostomos <sprout@cpan.org>2012-11-30 18:02:35 -0800
commitc2b36a6de0f63707e6ca496d5f88e40d768a6c0e (patch)
tree137a2fd68e746f7351f0232cb23be16f066784ac /pad.c
parent9593456923bf641a10e8faeb51720606580a4fec (diff)
downloadperl-c2b36a6de0f63707e6ca496d5f88e40d768a6c0e.tar.gz
Stop duplicate lex vars from leaking under fatal warnings
Diffstat (limited to 'pad.c')
-rw-r--r--pad.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/pad.c b/pad.c
index 0818625a08..dd348f7ed8 100644
--- a/pad.c
+++ b/pad.c
@@ -627,8 +627,12 @@ Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen,
flags &= ~padadd_UTF8_NAME;
if ((flags & padadd_NO_DUP_CHECK) == 0) {
+ ENTER;
+ SAVEFREESV(namesv); /* in case of fatal warnings */
/* check for duplicate declaration */
pad_check_dup(namesv, flags & padadd_OUR, ourstash);
+ SvREFCNT_inc_simple_void_NN(namesv);
+ LEAVE;
}
offset = pad_alloc_name(namesv, flags & ~padadd_UTF8_NAME, typestash, ourstash);