summaryrefslogtreecommitdiff
path: root/op.c
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>1998-03-02 16:36:02 -0500
committerMalcolm Beattie <mbeattie@sable.ox.ac.uk>1998-03-05 19:04:34 +0000
commit2f34f9d4825ac9262ece854fc4c50479f4838ff8 (patch)
tree5d59502cebf6b8a413033b2d67ad85a099a5a30a /op.c
parentd6582e46845f6c37893e96dbdd201cd0601d3550 (diff)
downloadperl-2f34f9d4825ac9262ece854fc4c50479f4838ff8.tar.gz
Make autouse -w-safe
p4raw-id: //depot/perl@781
Diffstat (limited to 'op.c')
-rw-r--r--op.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/op.c b/op.c
index e30e874117..28e05f1c53 100644
--- a/op.c
+++ b/op.c
@@ -3332,7 +3332,10 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
if (curstack == sortstack && sortcop == CvSTART(cv))
croak("Can't redefine active sort subroutine %s", name);
const_sv = cv_const_sv(cv);
- if (const_sv || dowarn) {
+ if (const_sv || dowarn && !(CvGV(cv) && GvSTASH(CvGV(cv))
+ && HvNAME(GvSTASH(CvGV(cv)))
+ && strEQ(HvNAME(GvSTASH(CvGV(cv))),
+ "autouse"))) {
line_t oldline = curcop->cop_line;
curcop->cop_line = copline;
warn(const_sv ? "Constant subroutine %s redefined"
@@ -3527,7 +3530,9 @@ newXS(char *name, void (*subaddr) (CV *), char *filename)
}
else if (CvROOT(cv) || CvXSUB(cv) || GvASSUMECV(gv)) {
/* already defined (or promised) */
- if (dowarn) {
+ if (dowarn && !(CvGV(cv) && GvSTASH(CvGV(cv))
+ && HvNAME(GvSTASH(CvGV(cv)))
+ && strEQ(HvNAME(GvSTASH(CvGV(cv))), "autouse"))) {
line_t oldline = curcop->cop_line;
curcop->cop_line = copline;
warn("Subroutine %s redefined",name);