Author: timbo
Date: Tue Apr 25 17:54:23 2006
New Revision: 5964

Modified:
   dbi/trunk/DBI.pm

Log:
Fix connect_cached to not modify caller data thanks to Dami Laurent


Modified: dbi/trunk/DBI.pm
==============================================================================
--- dbi/trunk/DBI.pm    (original)
+++ dbi/trunk/DBI.pm    Tue Apr 25 17:54:23 2006
@@ -524,10 +524,12 @@
     # For library code using connect_cached() with mod_perl
     # we redirect those calls to Apache::DBI::connect() as well
     my ($class, $dsn, $user, $pass, $attr) = @_;
-    # XXX modifies callers data!
-    ($attr ||= {})->{dbi_connect_method} =
-       ($DBI::connect_via eq "Apache::DBI::connect")
+    my $dbi_connect_method = ($DBI::connect_via eq "Apache::DBI::connect")
            ? 'Apache::DBI::connect' : 'connect_cached';
+    $attr = {
+        $attr ? %$attr : (), # clone, don't modify callers data
+        dbi_connect_method => $dbi_connect_method,
+    };
     return $class->connect($dsn, $user, $pass, $attr);
 }
 

Reply via email to