This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #39739] Exporter::Heavy ignores custom $SIG{__WARN__} handlers
[perl5.git] / dist / Exporter / lib / Exporter / Heavy.pm
index 724028a..21b67c1 100644 (file)
@@ -38,8 +38,13 @@ sub _rebuild_cache {
 
 sub heavy_export {
 
+    # Save the old __WARN__ handler in case it was defined
+    my $oldwarn = $SIG{__WARN__};
+
     # First make import warnings look like they're coming from the "use".
     local $SIG{__WARN__} = sub {
+       # restore it back so proper stacking occurs
+       local $SIG{__WARN__} = $oldwarn;
        my $text = shift;
        if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) {
            require Carp;