summaryrefslogtreecommitdiff
path: root/cop.h
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>2000-06-30 04:37:33 +0000
committerGurusamy Sarathy <gsar@cpan.org>2000-06-30 04:37:33 +0000
commit7032098e3624717c340da3e1b7cc1d22959257c0 (patch)
tree04ad10e123399e2ce2574436560a9e2a3d96c671 /cop.h
parent0cacb523b3d9abfe9ac5761f31a2c11458e98c49 (diff)
downloadperl-7032098e3624717c340da3e1b7cc1d22959257c0.tar.gz
dounwind() may cause POPSUB() to diddle the wrong PL_curpad
when @_ is modified, causing coredumps p4raw-id: //depot/perl@6291
Diffstat (limited to 'cop.h')
-rw-r--r--cop.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/cop.h b/cop.h
index e0a81278c1..4584a96056 100644
--- a/cop.h
+++ b/cop.h
@@ -80,6 +80,7 @@ struct block_sub {
U16 olddepth;
U8 hasargs;
U8 lval; /* XXX merge lval and hasargs? */
+ SV ** oldcurpad;
};
#define PUSHSUB(cx) \
@@ -126,7 +127,7 @@ struct block_sub {
cx->blk_sub.argarray = newAV(); \
av_extend(cx->blk_sub.argarray, fill); \
AvFLAGS(cx->blk_sub.argarray) = AVf_REIFY; \
- PL_curpad[0] = (SV*)cx->blk_sub.argarray; \
+ cx->blk_sub.oldcurpad[0] = (SV*)cx->blk_sub.argarray; \
} \
else { \
CLEAR_ARGARRAY(cx->blk_sub.argarray); \