summaryrefslogtreecommitdiff
path: root/scope.h
diff options
context:
space:
mode:
authorDave Mitchell <davem@fdisolutions.com>2004-03-26 13:05:50 +0000
committerDave Mitchell <davem@fdisolutions.com>2004-03-26 13:05:50 +0000
commitdfa41748806263fb8b5d5fcb051bd36be96fe93c (patch)
tree489e1161a9e207248764b6552aba3327e675d317 /scope.h
parent61967be2c930c0a1754925d7a1d1c2924a3b57ab (diff)
downloadperl-dfa41748806263fb8b5d5fcb051bd36be96fe93c.tar.gz
[perl #27040] - hints hash was being double freed on scope exit
p4raw-id: //depot/perl@22594
Diffstat (limited to 'scope.h')
-rw-r--r--scope.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/scope.h b/scope.h
index 8abeb72d9e..bbb55628fe 100644
--- a/scope.h
+++ b/scope.h
@@ -152,14 +152,14 @@ Closing bracket on a callback. See C<ENTER> and L<perlcall>.
#define SAVEOP() save_op()
#define SAVEHINTS() \
- STMT_START { \
- if (PL_hints & HINT_LOCALIZE_HH) \
- save_hints(); \
- else { \
- SSCHECK(2); \
- SSPUSHINT(PL_hints); \
- SSPUSHINT(SAVEt_HINTS); \
- } \
+ STMT_START { \
+ SSCHECK(3); \
+ if (PL_hints & HINT_LOCALIZE_HH) { \
+ SSPUSHPTR(GvHV(PL_hintgv)); \
+ GvHV(PL_hintgv) = newHVhv(GvHV(PL_hintgv)); \
+ } \
+ SSPUSHINT(PL_hints); \
+ SSPUSHINT(SAVEt_HINTS); \
} STMT_END
#define SAVECOMPPAD() \