X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=scope.c;h=20e027ff8e82d207c2bbaeffc68891a80ff7207d;hb=c68ec7a9f950f968bb39608a47e0228e03511a18;hp=cad14dec7bb09555f876b228a4a17cffe9e6f143;hpb=d30e492cced9a7022652176a253f8f900679d9b0;p=p5sagit%2Fp5-mst-13.2.git diff --git a/scope.c b/scope.c index cad14de..20e027f 100644 --- a/scope.c +++ b/scope.c @@ -509,6 +509,17 @@ Perl_save_delete(pTHX_ HV *hv, char *key, I32 klen) } void +Perl_save_adelete(pTHX_ AV *av, I32 key) +{ + dVAR; + + PERL_ARGS_ASSERT_SAVE_ADELETE; + + SvREFCNT_inc_void(av); + save_pushi32ptr(key, av, SAVEt_ADELETE); +} + +void Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void* p) { dVAR; @@ -864,6 +875,13 @@ Perl_leave_scope(pTHX_ I32 base) SvREFCNT_dec(hv); Safefree(ptr); break; + case SAVEt_ADELETE: + ptr = SSPOPPTR; + av = MUTABLE_AV(ptr); + i = SSPOPINT; + (void)av_delete(av, i, G_DISCARD); + SvREFCNT_dec(av); + break; case SAVEt_DESTRUCTOR_X: ptr = SSPOPPTR; (*SSPOPDXPTR)(aTHX_ ptr);