Carp.pm caller_info returns wrong info for eval
Robert Spier [Wed, 19 Dec 2001 14:13:38 +0000 (06:13 -0800)]
Message-ID: <15393.4370.605214.548582@rls.cx>

p4raw-id: //depot/perl@13816

lib/Carp.t
lib/Carp/Heavy.pm

index a318c19..e9dd8cd 100644 (file)
@@ -5,7 +5,7 @@ BEGIN {
 
 use Carp qw(carp cluck croak confess);
 
-print "1..7\n";
+print "1..8\n";
 
 print "ok 1\n";
 
@@ -51,3 +51,8 @@ sub_6;
 
 print "ok 7\n";
 
+# test for caller_info API
+my $eval = "use Carp::Heavy; return Carp::caller_info(0);";
+my %info = eval($eval);
+print "not " if ($info{sub_name} ne "eval '$eval'");
+print "ok 8\n";
index 5228b9b..5de3972 100644 (file)
@@ -77,14 +77,14 @@ sub get_status {
 # the sub/require/eval
 sub get_subname {
   my $info = shift;
-  if (defined($info->{eval})) {
-    my $eval = $info->{eval};
+  if (defined($info->{evaltext})) {
+    my $eval = $info->{evaltext};
     if ($info->{is_require}) {
       return "require $eval";
     }
     else {
       $eval =~ s/([\\\'])/\\$1/g;
-      return str_len_trim($eval, $MaxEvalLen);
+      return "eval '" . str_len_trim($eval, $MaxEvalLen) . "'";
     }
   }