summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2007-04-25 15:19:21 +0000
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2007-04-25 15:19:21 +0000
commit4de05cebc806d4b25ef35cec05858ca1c0db23e5 (patch)
tree9e2d693d21d6433b1075bcbc2fc7a2f8c7dbf878
parent295812e04a6d8f506d47682b9ea5e7e62b4afbf5 (diff)
downloadperl-4de05cebc806d4b25ef35cec05858ca1c0db23e5.tar.gz
overload must not load XS modules at compile time, or perl
doesn't compile. overload must not clobber $! or $@ behind the scenes when loading an XS module. p4raw-id: //depot/perl@31076
-rw-r--r--lib/overload.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/overload.pm b/lib/overload.pm
index 23dbebbb4f..c02fddbfab 100644
--- a/lib/overload.pm
+++ b/lib/overload.pm
@@ -2,8 +2,6 @@ package overload;
our $VERSION = '1.06';
-require Scalar::Util;
-
sub nil {}
sub OVERLOAD {
@@ -75,6 +73,9 @@ sub OverloadedStringify {
sub Method {
my $package = shift;
if(ref $package) {
+ local $@;
+ local $!;
+ require Scalar::Util;
$package = Scalar::Util::blessed($package);
return undef if !defined $package;
}
@@ -88,6 +89,9 @@ sub AddrRef {
my $package = ref $_[0];
return "$_[0]" unless $package;
+ local $@;
+ local $!;
+ require Scalar::Util;
my $class = Scalar::Util::blessed($_[0]);
my $class_prefix = defined($class) ? "$class=" : "";
my $type = Scalar::Util::reftype($_[0]);