summaryrefslogtreecommitdiff
path: root/gv.c
diff options
context:
space:
mode:
Diffstat (limited to 'gv.c')
-rw-r--r--gv.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gv.c b/gv.c
index e5312049b1..d1cf7ae62a 100644
--- a/gv.c
+++ b/gv.c
@@ -609,12 +609,15 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
/* Adding a new symbol */
- if (add & GV_ADDWARN)
- Perl_warn(aTHX_ "Had to create %s unexpectedly", nambeg);
+ if (add & GV_ADDWARN && ckWARN_d(WARN_INTERNAL))
+ Perl_warner(aTHX_ WARN_INTERNAL, "Had to create %s unexpectedly", nambeg);
gv_init(gv, stash, name, len, add & GV_ADDMULTI);
gv_init_sv(gv, sv_type);
GvFLAGS(gv) |= add_gvflags;
+ if (isLEXWARN_on && isALPHA(name[0]) && ! ckWARN(WARN_ONCE))
+ GvMULTI_on(gv) ;
+
/* set up magic where warranted */
switch (*name) {
case 'A':
@@ -946,11 +949,12 @@ Perl_gp_free(pTHX_ GV *gv)
{
GP* gp;
CV* cv;
+ dTHR;
if (!gv || !(gp = GvGP(gv)))
return;
- if (gp->gp_refcnt == 0) {
- Perl_warn(aTHX_ "Attempt to free unreferenced glob pointers");
+ if (gp->gp_refcnt == 0 && ckWARN_d(WARN_INTERNAL)) {
+ Perl_warner(aTHX_ WARN_INTERNAL, "Attempt to free unreferenced glob pointers");
return;
}
if (gp->gp_cv) {