[Bast-commits] r5785 - in trunk/DBIx-Class-Schema-Loader: . lib/DBIx/Class/Schema/Loader

kane at dev.catalyst.perl.org kane at dev.catalyst.perl.org
Fri Mar 20 20:21:00 GMT 2009


Author: kane
Date: 2009-03-20 20:21:00 +0000 (Fri, 20 Mar 2009)
New Revision: 5785

Modified:
   trunk/DBIx-Class-Schema-Loader/
   trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/Base.pm
   trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/DBI.pm
Log:
 r3538 at ds013:  kane | 2009-03-20 21:18:21 +0100
 *  must use $UNIVERSAL::require::ERROR, $@ is not safe. See RT #44444 



Property changes on: trunk/DBIx-Class-Schema-Loader
___________________________________________________________________
Name: svk:merge
   - bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-Schema-Loader/current:3362
   + 6bb30d22-934f-40ac-a2a4-28ad36850c49:/local/cat/DBIx-Class-Schema-Loader:3538
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-Schema-Loader/current:3362

Modified: trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/Base.pm
===================================================================
--- trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/Base.pm	2009-03-20 15:23:40 UTC (rev 5784)
+++ trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/Base.pm	2009-03-20 20:21:00 UTC (rev 5785)
@@ -299,10 +299,10 @@
     my $real_inc_path = Cwd::abs_path($inc_path);
     return if $real_inc_path eq $real_dump_path;
 
-    $class->require;
-    croak "Failed to load external class definition"
-        . " for '$class': $@"
-            if $@;
+    # must use $UNIVERSAL::require::ERROR, $@ is not safe. See RT #44444 --kane
+    $class->require or 
+        croak "Failed to load external class definition"
+            . " for '$class': $UNIVERSAL::require::ERROR";
 
     # If we make it to here, we loaded an external definition
     warn qq/# Loaded external class definition for '$class'\n/
@@ -584,7 +584,7 @@
     foreach (@_) {
         warn "$target: use $_;" if $self->debug;
         $self->_raw_stmt($target, "use $_;");
-        $_->require or croak ($_ . "->require: $@");
+        $_->require or croak ($_ . "->require: $UNIVERSAL::require::ERROR");
         $evalstr .= "package $target; use $_;";
     }
     eval $evalstr if $evalstr;
@@ -600,7 +600,7 @@
     warn "$target: use base qw/ $blist /;" if $self->debug && @_;
     $self->_raw_stmt($target, "use base qw/ $blist /;") if @_;
     foreach (@_) {
-        $_->require or croak ($_ . "->require: $@");
+        $_->require or croak ($_ . "->require: $UNIVERSAL::require::ERROR");
         $schema_class->inject_base($target, $_);
     }
 }

Modified: trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/DBI.pm
===================================================================
--- trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/DBI.pm	2009-03-20 15:23:40 UTC (rev 5784)
+++ trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/DBI.pm	2009-03-20 20:21:00 UTC (rev 5785)
@@ -40,8 +40,12 @@
     my $dbh = $self->schema->storage->dbh;
     my $driver = $dbh->{Driver}->{Name};
     my $subclass = 'DBIx::Class::Schema::Loader::DBI::' . $driver;
+    
+    # must use $UNIVERSAL::require::ERROR, $@ is not safe. See RT #44444 --kane
     $subclass->require;
-    if($@ && $@ !~ /^Can't locate /) {
+    if($UNIVERSAL::require::ERROR && 
+       $UNIVERSAL::require::ERROR !~ /^Can't locate /
+    ) {
         croak "Failed to require $subclass: $@";
     }
     elsif(!$@) {




More information about the Bast-commits mailing list