Fix load_namespaces fail when classes tinker with $_
Peter Rabbitson [Wed, 27 Oct 2010 10:39:22 +0000 (12:39 +0200)]
Changes
lib/DBIx/Class/Schema.pm
t/lib/DBICNSTest/Rslt/A.pm

diff --git a/Changes b/Changes
index 8bdefc4..9ed8f88 100644 (file)
--- a/Changes
+++ b/Changes
@@ -29,15 +29,17 @@ Revision history for DBIx::Class
           when the supplied data does not fully specify $constraint
         - find( col1 => $val1, col2 => $val2, ... ) is no longer supported
           (it has been in deprecated state for more than 4 years)
+        - Make sure exception_action does not allow exception-hiding
+          due to badly-written handlers (the mechanism was never meant
+          to be able to suppress exceptions)
 
     * Fixes
         - Fix memory leak during populate() on 5.8.x perls
         - Temporarily fixed 5.13.x failures (RT#58225)
           (perl-core fix still pending)
         - Fix result_soutrce_instance leaks on compose_namespace
-        - Make sure exception_action does not allow exception-hiding
-          due to badly-written handlers (the mechanism was never meant
-          to be able to suppress exceptions)
+        - Fix $_ volatility on load_namespaces (a class changing $_
+          at compile time no longer causes a massive fail)
         - Fix find() without a key attr. choosing constraints even if
           some of the supplied values are NULL (RT#59219)
         - Fixed rels ending with me breaking subqueried limit realiasing
index 3c992ab..348edeb 100644 (file)
@@ -244,7 +244,9 @@ sub load_namespaces {
     use warnings 'redefine';
 
     # ensure classes are loaded and attached in inheritance order
-    $class->ensure_class_loaded($_) foreach(values %results);
+    for my $res (values %results) {
+      $class->ensure_class_loaded($res);
+    }
     my %inh_idx;
     my @subclass_last = sort {
 
index 832500a..d02038f 100644 (file)
@@ -2,4 +2,8 @@ package DBICNSTest::Rslt::A;
 use base qw/DBIx::Class::Core/;
 __PACKAGE__->table('a');
 __PACKAGE__->add_columns('a');
+
+# part of a test, do not remove
+$_ = 'something completely utterly bogus';
+
 1;