X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=blobdiff_plain;f=indirect.xs;h=12e83d5c92ad1fe3b3c7265655371165cb69491d;hp=01b4a77ab3494923b1b1297b39a662f9c3029744;hb=9856d89db33e335664cca6910de72b53e0e12763;hpb=a563bfdf922825ad97cb71f5498d5f038cacd9d2 diff --git a/indirect.xs b/indirect.xs index 01b4a77..12e83d5 100644 --- a/indirect.xs +++ b/indirect.xs @@ -604,6 +604,16 @@ done: /* ... ck_entersub ......................................................... */ +STATIC int indirect_is_indirect(const indirect_op_info_t *moi, const indirect_op_info_t *ooi) { + if (moi->pos > ooi->pos) + return 0; + + if (moi->pos == ooi->pos) + return moi->len == ooi->len && !memcmp(moi->buf, ooi->buf, moi->len); + + return 1; +} + STATIC OP *(*indirect_old_ck_entersub)(pTHX_ OP *) = 0; STATIC OP *indirect_ck_entersub(pTHX_ OP *o) { @@ -651,7 +661,7 @@ STATIC OP *indirect_ck_entersub(pTHX_ OP *o) { if (!(ooi && ooi->pos)) goto done; - if (moi->pos < ooi->pos) { + if (indirect_is_indirect(moi, ooi)) { SV *file; dSP;