X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=indirect.xs;h=d6ae98044d8f9c9c179ddd62cbcdaea98fe3bf57;hb=4ab95f0002e77f5f32d6814b3b34ca03ff11ee2d;hp=328214f3b68198dd9afac7aab4297efa06af2368;hpb=25884bd42c11aa234940b6316d1be9587cc6fd20;p=perl%2Fmodules%2Findirect.git diff --git a/indirect.xs b/indirect.xs index 328214f..d6ae980 100644 --- a/indirect.xs +++ b/indirect.xs @@ -50,7 +50,7 @@ STATIC void indirect_map_store(pTHX_ const OP *o, const char *src, SV *sv) { SvREFCNT_dec(val); } -STATIC const char *indirect_map_fetch(pTHX_ const OP *o, SV **name) { +STATIC const char *indirect_map_fetch(pTHX_ const OP *o, SV ** const name) { #define indirect_map_fetch(O, S) indirect_map_fetch(aTHX_ (O), (S)) char buf[32]; SV **val; @@ -175,12 +175,15 @@ STATIC OP *indirect_ck_entersub(pTHX_ OP *o) { om = om->op_sibling; if (om->op_type == OP_METHOD) om = cUNOPx(om)->op_first; + else if (om->op_type != OP_METHOD_NAMED) + goto done; pm = indirect_map_fetch(om, &svm); po = indirect_map_fetch(oo, &svo); if (pm && po && pm < po) ((hint == 2) ? croak : warn)(indirect_msg, SvPV_nolen(svm), SvPV_nolen(svo)); } +done: return CALL_FPTR(indirect_old_ck_entersub)(aTHX_ o); }