/* scope.c
*
- * Copyright (c) 1991-1999, Larry Wall
+ * Copyright (c) 1991-2000, Larry Wall
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
#define PERL_IN_SCOPE_C
#include "perl.h"
+#if defined(PERL_FLEXIBLE_EXCEPTIONS)
void *
Perl_default_protect(pTHX_ volatile JMPENV *pcur_env, int *excpt,
protect_body_t body, ...)
int ex;
void *ret;
- DEBUG_l(Perl_deb(aTHX_ "Setting up local jumplevel %p, was %p\n",
- pcur_env, PL_top_env));
JMPENV_PUSH(ex);
if (ex)
ret = NULL;
JMPENV_POP;
return ret;
}
+#endif
SV**
Perl_stack_grow(pTHX_ SV **sp, SV **p, int n)
Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems)
{
PERL_SI *si;
- PERL_CONTEXT *cxt;
New(56, si, 1, PERL_SI);
si->si_stack = newAV();
AvREAL_off(si->si_stack);
av = GvAVn(gv);
if (SvMAGIC(oav)) {
SvMAGIC(av) = SvMAGIC(oav);
- SvFLAGS(av) |= SvMAGICAL(oav);
+ SvFLAGS((SV*)av) |= SvMAGICAL(oav);
SvMAGICAL_off(oav);
SvMAGIC(oav) = 0;
PL_localizing = 1;
hv = GvHVn(gv);
if (SvMAGIC(ohv)) {
SvMAGIC(hv) = SvMAGIC(ohv);
- SvFLAGS(hv) |= SvMAGICAL(ohv);
+ SvFLAGS((SV*)hv) |= SvMAGICAL(ohv);
SvMAGICAL_off(ohv);
SvMAGIC(ohv) = 0;
PL_localizing = 1;
if (GvAV(gv)) {
AV *goner = GvAV(gv);
SvMAGIC(av) = SvMAGIC(goner);
- SvFLAGS(av) |= SvMAGICAL(goner);
+ SvFLAGS((SV*)av) |= SvMAGICAL(goner);
SvMAGICAL_off(goner);
SvMAGIC(goner) = 0;
SvREFCNT_dec(goner);
}
*(I32*)&PL_hints = (I32)SSPOPINT;
break;
+ case SAVEt_COMPPAD:
+ PL_comppad = (AV*)SSPOPPTR;
+ if (PL_comppad)
+ PL_curpad = AvARRAY(PL_comppad);
+ else
+ PL_curpad = Null(SV**);
+ break;
default:
Perl_croak(aTHX_ "panic: leave_scope inconsistency");
}
PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_OP_TYPE = %s (%s)\n",
PL_op_name[cx->blk_eval.old_op_type],
PL_op_desc[cx->blk_eval.old_op_type]);
- PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_NAME = %s\n",
- cx->blk_eval.old_name);
+ if (cx->blk_eval.old_namesv)
+ PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_NAME = %s\n",
+ SvPVX(cx->blk_eval.old_namesv));
PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_EVAL_ROOT = 0x%"UVxf"\n",
PTR2UV(cx->blk_eval.old_eval_root));
break;