(perl #134291) propagate non-PVs in $@ in bare die()
authorTony Cook <tony@develop-help.com>
Wed, 17 Jul 2019 01:32:50 +0000 (11:32 +1000)
committerTony Cook <tony@develop-help.com>
Mon, 22 Jul 2019 00:25:47 +0000 (10:25 +1000)
pp_sys.c
t/op/die.t

index 0214367..2515277 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -498,7 +498,7 @@ PP(pp_die)
                }
            }
        }
-       else if (SvPOK(errsv) && SvCUR(errsv)) {
+       else if (SvOK(errsv) && (SvPV_nomg(errsv,len), len)) {
            exsv = sv_mortalcopy(errsv);
            sv_catpvs(exsv, "\t...propagated");
        }
index ef2b85f..d6d7daf 100644 (file)
@@ -6,7 +6,7 @@ BEGIN {
     set_up_inc('../lib');
 }
 
-plan tests => 20;
+plan tests => 21;
 
 eval {
     eval {
@@ -94,6 +94,10 @@ like($@, qr/\.{3}propagated at/, '... and appends a phrase');
     local $SIG{__WARN__} = sub { $ok = 0 };
     eval { undef $@; die };
     is( $ok, 1, 'no warnings if $@ is undef' );
+
+    eval { $@ = 100; die };
+    like($@."", qr/100\t\.{3}propagated at/,
+         'check non-PVs in $@ are propagated');
 }
 
 TODO: {