From: Gurusamy Sarathy Date: Sun, 23 Jan 2000 21:19:31 +0000 (+0000) Subject: change#4866 was flawed; revert and add better fix for warning X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=64aac5a92f5a6e49b46f320202aef13277e3640b;p=p5sagit%2Fp5-mst-13.2.git change#4866 was flawed; revert and add better fix for warning p4raw-link: @4866 on //depot/perl: ef8040b067557994d471dfa4e5ac3900907e94ce p4raw-id: //depot/perl@4867 --- diff --git a/op.c b/op.c index 29f860c..76e6b4d 100644 --- a/op.c +++ b/op.c @@ -1098,7 +1098,7 @@ Perl_scalarvoid(pTHX_ OP *o) case OP_GGRGID: case OP_GETLOGIN: func_ops: - if (!(o->op_private & OPpLVAL_INTRO)) + if (!(o->op_private & (OPpLVAL_INTRO|OPpOUR_INTRO))) useless = PL_op_desc[o->op_type]; break; @@ -6292,17 +6292,10 @@ Perl_peep(pTHX_ register OP *o) case OP_GV: if (o->op_next->op_type == OP_RV2SV) { - /* don't execute our($foo) */ - if (o->op_next->op_private & OPpOUR_INTRO) { + if (!(o->op_next->op_private & OPpDEREF)) { null(o->op_next); - o->op_next = o->op_next->op_next; - null(o); - if (oldop && o->op_next) - oldop->op_next = o->op_next; - } - else if (!(o->op_next->op_private & OPpDEREF)) { - null(o->op_next); - o->op_private |= o->op_next->op_private & OPpLVAL_INTRO; + o->op_private |= o->op_next->op_private & (OPpLVAL_INTRO + | OPpOUR_INTRO); o->op_next = o->op_next->op_next; o->op_type = OP_GVSV; o->op_ppaddr = PL_ppaddr[OP_GVSV]; diff --git a/op.h b/op.h index ae37f03..91cdb6b 100644 --- a/op.h +++ b/op.h @@ -137,7 +137,7 @@ typedef U32 PADOFFSET; #define OPpEARLY_CV 32 /* foo() called before sub foo was parsed */ /* OP_?ELEM only */ #define OPpLVAL_DEFER 16 /* Defer creation of array/hash elem */ - /* OP_RV2?V only */ + /* OP_RV2?V, OP_GVSV only */ #define OPpOUR_INTRO 16 /* Defer creation of array/hash elem */ /* for OP_RV2?V, lower bits carry hints (currently only HINT_STRICT_REFS) */