Re: Short test case for undef %stash:: crash
Benjamin Sugars [Mon, 23 Apr 2001 16:59:33 +0000 (12:59 -0400)]
Message-ID: <Pine.LNX.4.21.0104231623520.790-100000@marmot.rim.canoe.ca>
Changed and moved the perldiag entry.

p4raw-id: //depot/perl@9854

gv.c
pod/perldiag.pod

diff --git a/gv.c b/gv.c
index 117667c..eafd982 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -190,6 +190,8 @@ Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
 
     if (!stash)
        return 0;
+    if (!HvNAME(stash))
+        Perl_croak(aTHX_ "Can't use anonymous symbol table for method lookup");
     if ((level > 100) || (level < -100))
        Perl_croak(aTHX_ "Recursive inheritance detected while looking for method '%s' in package '%s'",
              name, HvNAME(stash));
index 98b2580..524c2bd 100644 (file)
@@ -994,6 +994,12 @@ calling sv_upgrade.
 (F) A value used as either a hard reference or a symbolic reference must
 be a defined value.  This helps to delurk some insidious errors.
 
+=item Can't use anonymous symbol table for method lookup
+
+(P) The internal routine that does method lookup was handed a symbol
+table that doesn't have a name.  Symbol tables can become anonymous
+for example by undefining stashes: C<undef %Some::Package::>.
+
 =item Can't use bareword ("%s") as %s ref while "strict refs" in use
 
 (F) Only hard references are allowed by "strict refs".  Symbolic