summaryrefslogtreecommitdiff
path: root/pp_hot.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>2000-03-13 06:59:57 +0000
committerGurusamy Sarathy <gsar@cpan.org>2000-03-13 06:59:57 +0000
commit959e367355e7dca571e3848d9993f40c66a84fd5 (patch)
tree2cdafaf45978c4665a8f0917f4709ae5e5653f35 /pp_hot.c
parent24ef60581ee187bb6d4388e124dfc34b8cf0b663 (diff)
downloadperl-959e367355e7dca571e3848d9993f40c66a84fd5.tar.gz
the premature FREETMPS calls in change#1187 weren't defensive enough
p4raw-link: @1187 on //depot/perl: a29cdaf07aa5601e42ae4955cc0f168e91a7c385 p4raw-id: //depot/perl@5699
Diffstat (limited to 'pp_hot.c')
-rw-r--r--pp_hot.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pp_hot.c b/pp_hot.c
index beb2cf28f3..3b13176bed 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -2012,8 +2012,10 @@ PP(pp_leavesub)
sv_2mortal(*MARK);
}
else {
+ sv = SvREFCNT_inc(TOPs); /* FREETMPS could clobber it */
FREETMPS;
- *MARK = sv_mortalcopy(TOPs);
+ *MARK = sv_mortalcopy(sv);
+ SvREFCNT_dec(sv);
}
}
else
@@ -2161,8 +2163,10 @@ PP(pp_leavesublv)
sv_2mortal(*MARK);
}
else {
+ sv = SvREFCNT_inc(TOPs); /* FREETMPS could clobber it */
FREETMPS;
- *MARK = sv_mortalcopy(TOPs);
+ *MARK = sv_mortalcopy(sv);
+ SvREFCNT_dec(sv);
}
}
else