summaryrefslogtreecommitdiff
path: root/gv.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1998-04-03 06:59:37 +0000
committerGurusamy Sarathy <gsar@cpan.org>1998-04-03 06:59:37 +0000
commite336de0d01f30cc4061b6d6a00d11df30fc67cd3 (patch)
tree47af4eae88807f461d216a10701a0502a2373226 /gv.c
parentdfb1c8b93631b1cf8c1d0d2295ffff2bf0f098a7 (diff)
downloadperl-e336de0d01f30cc4061b6d6a00d11df30fc67cd3.tar.gz
[win32] implement stack-of-stacks so that magic invocations don't
invalidate local stack pointer p4raw-id: //depot/win32/perl@864
Diffstat (limited to 'gv.c')
-rw-r--r--gv.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/gv.c b/gv.c
index 9948b126fd..34237510ff 100644
--- a/gv.c
+++ b/gv.c
@@ -639,11 +639,6 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
psig_ptr[i] = 0;
psig_name[i] = 0;
}
- /* initialize signal stack */
- signalstack = newAV();
- AvREAL_off(signalstack);
- av_extend(signalstack, 30);
- av_fill(signalstack, 0);
}
break;
@@ -1094,9 +1089,6 @@ Gv_AMupdate(HV *stash)
return FALSE;
}
-/* During call to this subroutine stack can be reallocated. It is
- * advised to call SPAGAIN macro in your code after call */
-
SV*
amagic_call(SV *left, SV *right, int method, int flags)
{
@@ -1311,6 +1303,7 @@ amagic_call(SV *left, SV *right, int method, int flags)
myop.op_next = Nullop;
myop.op_flags = OPf_WANT_SCALAR | OPf_STACKED;
+ PUSHSTACK(SI_OVERLOAD);
ENTER;
SAVEOP();
op = (OP *) &myop;
@@ -1335,7 +1328,7 @@ amagic_call(SV *left, SV *right, int method, int flags)
SPAGAIN;
res=POPs;
- PUTBACK;
+ POPSTACK();
CATCH_SET(oldcatch);
if (postpr) {