X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FOpcode%2FOpcode.xs;h=eba1c86d7d1fb9c616730957a4b1e3f6488fc2f9;hb=13d771f075428106b872fe78aa3d944467de9082;hp=8354b488450a21010d0c945bfafa54d7b52d5adf;hpb=2596d9fe3023e9da9e3e000993c9f26fa30909ef;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/Opcode/Opcode.xs b/ext/Opcode/Opcode.xs index 8354b48..eba1c86 100644 --- a/ext/Opcode/Opcode.xs +++ b/ext/Opcode/Opcode.xs @@ -132,7 +132,7 @@ new_opset(pTHX_ SV *old_opset) opset = newSVsv(old_opset); } else { - opset = NEWSV(1156, opset_len); + opset = newSV(opset_len); Zero(SvPVX_const(opset), opset_len + 1, char); SvCUR_set(opset, opset_len); (void)SvPOK_only(opset); @@ -314,6 +314,10 @@ PPCODE: dummy_hv = save_hash(PL_incgv); GvHV(PL_incgv) = (HV*)SvREFCNT_inc(GvHV(gv_HVadd(gv_fetchpv("INC",TRUE,SVt_PVHV)))); + /* Invalidate ISA and method caches */ + ++PL_sub_generation; + hv_clear(PL_stashcache); + PUSHMARK(SP); perl_call_sv(codesv, GIMME|G_EVAL|G_KEEPERR); /* use callers context */ sv_free( (SV *) dummy_hv); /* get rid of what save_hash gave us*/