X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=mg.c;h=7c7c03ea30c062e48febe09238cdedaa0d6362ca;hb=842c41230043ce99d4bf7b2c79aed85ce2908e89;hp=59ead344d0d36d9482d5e2ea2d6a5708c81c107e;hpb=c6bf6a65e4bf512beae58d59446046f4ca20372f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/mg.c b/mg.c index 59ead34..7c7c03e 100644 --- a/mg.c +++ b/mg.c @@ -178,6 +178,8 @@ S_is_container_magic(const MAGIC *mg) case PERL_MAGIC_arylen_p: case PERL_MAGIC_rhash: case PERL_MAGIC_symtab: + case PERL_MAGIC_tied: /* treat as value, so 'local @tied' isn't tied */ + case PERL_MAGIC_tiedscalar: /* so 'local $scalar' isn't tied */ return 0; default: return 1; @@ -3004,7 +3006,7 @@ Perl_sighandler(int sig) (void)rsignal(sig, PL_csighandlerp); #endif #endif /* !PERL_MICRO */ - Perl_die(aTHX_ NULL); + die_sv(ERRSV); } cleanup: if (flags & 1) @@ -3071,14 +3073,12 @@ S_restore_magic(pTHX_ const void *p) */ if (PL_savestack_ix == mgs->mgs_ss_ix) { - UV type = SSPOPUV; - I32 popval; - assert(type == SAVEt_DESTRUCTOR_X); + UV popval = SSPOPUV; + assert(popval == SAVEt_DESTRUCTOR_X); PL_savestack_ix -= 2; - type = SSPOPUV; - assert(type == SAVEt_ALLOC); - popval = SSPOPINT; - PL_savestack_ix -= popval; + popval = SSPOPUV; + assert((popval & SAVE_MASK) == SAVEt_ALLOC); + PL_savestack_ix -= popval >> SAVE_TIGHT_SHIFT; } }