/*
=for apidoc gv_stashpv
-Returns a pointer to the stash for a specified package. If C<create> is
-set then the package will be created if it does not already exist. If
-C<create> is not set and the package does not exist then NULL is
-returned.
+Returns a pointer to the stash for a specified package. C<name> should
+be a valid UTF-8 string. If C<create> is set then the package will be
+created if it does not already exist. If C<create> is not set and the
+package does not exist then NULL is returned.
=cut
*/
/*
=for apidoc gv_stashsv
-Returns a pointer to the stash for a specified package. See
-C<gv_stashpv>.
+Returns a pointer to the stash for a specified package, which must be a
+valid UTF-8 string. See C<gv_stashpv>.
=cut
*/
I32 len;
register const char *namend;
HV *stash = 0;
- U32 add_gvflags = 0;
if (*name == '*' && isALPHA(name[1])) /* accidental stringify on a GV? */
name++;
sv_type == SVt_PVHV ? '%' : '$',
name);
if (GvCVu(*gvp))
- Perl_warn(aTHX_ "(Did you mean &%s instead?)\n", name);
+ Perl_warn(aTHX_ "\t(Did you mean &%s instead?)\n", name);
stash = 0;
}
}
: sv_type == SVt_PVAV ? "@"
: sv_type == SVt_PVHV ? "%"
: ""), name));
+ stash = PL_nullstash;
}
- return Nullgv;
+ else
+ return Nullgv;
}
if (!SvREFCNT(stash)) /* symbol table under destruction */
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) ;