Author: timbo
Date: Fri Sep 12 06:18:59 2008
New Revision: 11769

Modified:
   dbi/trunk/Changes
   dbi/trunk/DBI.pm
   dbi/trunk/lib/DBI/Gofer/Execute.pm

Log:
Fixed two small memory leaks when running in mod_perl
one in DBI->connect and one in DBI::Gofer::Execute.
Both due to "local $ENV{...};" leaking memory.


Modified: dbi/trunk/Changes
==============================================================================
--- dbi/trunk/Changes   (original)
+++ dbi/trunk/Changes   Fri Sep 12 06:18:59 2008
@@ -56,6 +56,9 @@
 
 =head2 Changes in DBI 1.608 (svn rXXX)
 
+  Fixed two small memory leaks when running in mod_perl
+    one in DBI->connect and one in DBI::Gofer::Execute.
+    Both due to "local $ENV{...};" leaking memory.
   Fixed DBD_ATTRIB_DELETE macro for driver authors
     and updated DBI::DBD docs thanks to Martin J. Evans.
 

Modified: dbi/trunk/DBI.pm
==============================================================================
--- dbi/trunk/DBI.pm    (original)
+++ dbi/trunk/DBI.pm    Fri Sep 12 06:18:59 2008
@@ -599,7 +599,7 @@
        DBI->trace_msg("       DBI_AUTOPROXY: 
dbi:$driver($driver_attrib_spec):$dsn\n");
     }
     # avoid recursion if proxy calls DBI->connect itself
-    local $ENV{DBI_AUTOPROXY};
+    local $ENV{DBI_AUTOPROXY} if $ENV{DBI_AUTOPROXY};
 
     my %attributes;    # take a copy we can delete from
     if ($old_driver) {

Modified: dbi/trunk/lib/DBI/Gofer/Execute.pm
==============================================================================
--- dbi/trunk/lib/DBI/Gofer/Execute.pm  (original)
+++ dbi/trunk/lib/DBI/Gofer/Execute.pm  Fri Sep 12 06:18:59 2008
@@ -157,7 +157,8 @@
         }
     }
 
-    local $ENV{DBI_AUTOPROXY}; # limit the insanity
+    # local $ENV{...} can leak, so only do it if required
+    local $ENV{DBI_AUTOPROXY} if $ENV{DBI_AUTOPROXY};
 
     my ($connect_method, $dsn, $username, $password, $attr) = @{ 
$request->dbh_connect_call };
     $connect_method ||= 'connect_cached';

Reply via email to