04bfb0
From 85d4e0a35b2d44cf06a9343d23a2f84b8ebb9024 Mon Sep 17 00:00:00 2001
04bfb0
From: Tony Cook <tony@develop-help.com>
04bfb0
Date: Wed, 17 Jul 2019 11:32:50 +1000
04bfb0
Subject: [PATCH] (perl #134291) propagate non-PVs in $@ in bare die()
04bfb0
MIME-Version: 1.0
04bfb0
Content-Type: text/plain; charset=UTF-8
04bfb0
Content-Transfer-Encoding: 8bit
04bfb0
04bfb0
Signed-off-by: Petr Písař <ppisar@redhat.com>
04bfb0
---
04bfb0
 pp_sys.c   | 2 +-
04bfb0
 t/op/die.t | 6 +++++-
04bfb0
 2 files changed, 6 insertions(+), 2 deletions(-)
04bfb0
04bfb0
diff --git a/pp_sys.c b/pp_sys.c
04bfb0
index 0214367ea6..251527785e 100644
04bfb0
--- a/pp_sys.c
04bfb0
+++ b/pp_sys.c
04bfb0
@@ -498,7 +498,7 @@ PP(pp_die)
04bfb0
 		}
04bfb0
 	    }
04bfb0
 	}
04bfb0
-	else if (SvPOK(errsv) && SvCUR(errsv)) {
04bfb0
+	else if (SvOK(errsv) && (SvPV_nomg(errsv,len), len)) {
04bfb0
 	    exsv = sv_mortalcopy(errsv);
04bfb0
 	    sv_catpvs(exsv, "\t...propagated");
04bfb0
 	}
04bfb0
diff --git a/t/op/die.t b/t/op/die.t
04bfb0
index ef2b85f8f5..d6d7daffa5 100644
04bfb0
--- a/t/op/die.t
04bfb0
+++ b/t/op/die.t
04bfb0
@@ -6,7 +6,7 @@ BEGIN {
04bfb0
     set_up_inc('../lib');
04bfb0
 }
04bfb0
 
04bfb0
-plan tests => 20;
04bfb0
+plan tests => 21;
04bfb0
 
04bfb0
 eval {
04bfb0
     eval {
04bfb0
@@ -94,6 +94,10 @@ like($@, qr/\.{3}propagated at/, '... and appends a phrase');
04bfb0
     local $SIG{__WARN__} = sub { $ok = 0 };
04bfb0
     eval { undef $@; die };
04bfb0
     is( $ok, 1, 'no warnings if $@ is undef' );
04bfb0
+
04bfb0
+    eval { $@ = 100; die };
04bfb0
+    like($@."", qr/100\t\.{3}propagated at/,
04bfb0
+         'check non-PVs in $@ are propagated');
04bfb0
 }
04bfb0
 
04bfb0
 TODO: {
04bfb0
-- 
04bfb0
2.20.1
04bfb0