summaryrefslogtreecommitdiff
path: root/op.c
diff options
context:
space:
mode:
authorAndy Lester <andy@petdance.com>2005-06-06 05:11:07 -0500
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2005-06-07 17:03:16 +0000
commit66a1b24beb76ea873ad4caa57ee3ab9df945afbf (patch)
treee59a6ec85d3a4225104f0176749497fb46256961 /op.c
parentf681a178ed5ab9eaae71b97c6eea3744c0304d67 (diff)
downloadperl-66a1b24beb76ea873ad4caa57ee3ab9df945afbf.tar.gz
Random cleanups #47
Message-ID: <20050606151107.GC7022@petdance.com> p4raw-id: //depot/perl@24735
Diffstat (limited to 'op.c')
-rw-r--r--op.c38
1 files changed, 23 insertions, 15 deletions
diff --git a/op.c b/op.c
index caf1d8433d..a134164083 100644
--- a/op.c
+++ b/op.c
@@ -3913,7 +3913,7 @@ whileline, OP *expr, OP *block, OP *cont, I32 has_my)
}
OP *
-Perl_newFOROP(pTHX_ I32 flags,char *label,line_t forline,OP *sv,OP *expr,OP *block,OP *cont)
+Perl_newFOROP(pTHX_ I32 flags, char *label, line_t forline, OP *sv, OP *expr, OP *block, OP *cont)
{
dVAR;
LOOP *loop;
@@ -3968,8 +3968,8 @@ Perl_newFOROP(pTHX_ I32 flags,char *label,line_t forline,OP *sv,OP *expr,OP *blo
*/
UNOP* flip = (UNOP*)((UNOP*)((BINOP*)expr)->op_first)->op_first;
LOGOP* range = (LOGOP*) flip->op_first;
- OP* left = range->op_first;
- OP* right = left->op_sibling;
+ OP* const left = range->op_first;
+ OP* const right = left->op_sibling;
LISTOP* listop;
range->op_flags &= ~OPf_KIDS;
@@ -4660,24 +4660,32 @@ Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename)
if (GvCVGEN(gv)) {
/* just a cached method */
SvREFCNT_dec(cv);
- cv = 0;
+ cv = Nullcv;
}
else if (CvROOT(cv) || CvXSUB(cv) || GvASSUMECV(gv)) {
/* already defined (or promised) */
/* XXX It's possible for this HvNAME_get to return null, and get passed into strEQ */
- if (ckWARN(WARN_REDEFINE) && !(CvGV(cv) && GvSTASH(CvGV(cv))
- && strEQ(HvNAME_get(GvSTASH(CvGV(cv))), "autouse"))) {
- const line_t oldline = CopLINE(PL_curcop);
- if (PL_copline != NOLINE)
- CopLINE_set(PL_curcop, PL_copline);
- Perl_warner(aTHX_ packWARN(WARN_REDEFINE),
- CvCONST(cv) ? "Constant subroutine %s redefined"
- : "Subroutine %s redefined"
- ,name);
- CopLINE_set(PL_curcop, oldline);
+ if (ckWARN(WARN_REDEFINE)) {
+ GV * const gvcv = CvGV(cv);
+ if (gvcv) {
+ HV * const stash = GvSTASH(gvcv);
+ if (stash) {
+ const char *name = HvNAME_get(stash);
+ if ( strEQ(name,"autouse") ) {
+ const line_t oldline = CopLINE(PL_curcop);
+ if (PL_copline != NOLINE)
+ CopLINE_set(PL_curcop, PL_copline);
+ Perl_warner(aTHX_ packWARN(WARN_REDEFINE),
+ CvCONST(cv) ? "Constant subroutine %s redefined"
+ : "Subroutine %s redefined"
+ ,name);
+ CopLINE_set(PL_curcop, oldline);
+ }
+ }
+ }
}
SvREFCNT_dec(cv);
- cv = 0;
+ cv = Nullcv;
}
}