Fix RT #74472 Exporter.pm blocks Signal handling
authorTodd Rinaldo <toddr@cpanel.net>
Sat, 3 Jul 2010 13:32:08 +0000 (15:32 +0200)
committerSteffen Mueller <smueller@cpan.org>
Sat, 3 Jul 2010 13:32:08 +0000 (15:32 +0200)
Exporter.pm overrides SIG{__WARN__}. This means It's not possible to
write a test to trap warning events for this error. Since all the line
seems to do is make the warning more verbose, I suggest it not be done
if someone has defined a custom signal. At the moment Test::NoWarnings
cannot trap these warnings because of this.

lib/Exporter.pm

index c37f39c..5fcc993 100644 (file)
@@ -62,7 +62,7 @@ sub import {
   }
   return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy;
   local $SIG{__WARN__} = 
-       sub {require Carp; &Carp::carp};
+       sub {require Carp; &Carp::carp} if not $SIG{__WARN__};
   # shortcut for the common case of no type character
   *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_;
 }