Fix RT #70862 by converting ERRSV to GvSVn() to ensure a non-NULL GvSV().
Nicholas Clark [Sun, 29 Nov 2009 16:42:42 +0000 (16:42 +0000)]
perl.h
t/op/eval.t

diff --git a/perl.h b/perl.h
index bf49279..2f02ba4 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1310,7 +1310,7 @@ EXTERN_C char *crypt(const char *, const char *);
 #   define SS_NORMAL           0
 #endif
 
-#define ERRSV GvSV(PL_errgv)
+#define ERRSV GvSVn(PL_errgv)
 #ifdef PERL_CORE
 # define DEFSV (0 + GvSVn(PL_defgv))
 #else
index 071b2fa..4daf0b9 100644 (file)
@@ -6,7 +6,7 @@ BEGIN {
     require './test.pl';
 }
 
-print "1..99\n";
+print "1..101\n";
 
 eval 'print "ok 1\n";';
 
@@ -557,3 +557,18 @@ $test++;
     print "ok $test - RT 63110\n";
     $test++;
 }
+
+curr_test($test);
+
+fresh_perl_is(<<'EOP', "ok\n", undef, 'RT #70862');
+$::{'@'}='';
+eval {};
+print "ok\n";
+EOP
+
+fresh_perl_is(<<'EOP', "ok\n", undef, 'variant of RT #70862');
+eval {
+    $::{'@'}='';
+};
+print "ok\n";
+EOP