Author: phred Date: Thu May 10 00:15:24 2007 New Revision: 536762 URL: http://svn.apache.org/viewvc?view=rev&rev=536762 Log: Remove modules before reloading them to avoid errors where Apache::Reload tries to recompile package A having the old package B symbols still in memory. Submitted by Javier Ureuen Val Reviewed by Fred Moyer
Modified: perl/Apache-Reload/trunk/Changes perl/Apache-Reload/trunk/lib/Apache/Reload.pm Modified: perl/Apache-Reload/trunk/Changes URL: http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/Changes?view=diff&rev=536762&r1=536761&r2=536762 ============================================================================== --- perl/Apache-Reload/trunk/Changes (original) +++ perl/Apache-Reload/trunk/Changes Thu May 10 00:15:24 2007 @@ -8,6 +8,9 @@ =item 0.08-dev +Remove modified modules before reloading them +[Javier Ureuen Val] + Imported from v0.07 into ASF SVN [Philip M. Gollucci <[EMAIL PROTECTED]>] Modified: perl/Apache-Reload/trunk/lib/Apache/Reload.pm URL: http://svn.apache.org/viewvc/perl/Apache-Reload/trunk/lib/Apache/Reload.pm?view=diff&rev=536762&r1=536761&r2=536762 ============================================================================== --- perl/Apache-Reload/trunk/lib/Apache/Reload.pm (original) +++ perl/Apache-Reload/trunk/lib/Apache/Reload.pm Thu May 10 00:15:24 2007 @@ -113,7 +113,7 @@ } } - + my @changed; while (my($key, $file) = each %Apache::Reload::INCS) { local $^W; warn "Apache::Reload: Checking mtime of $key\n" if $DEBUG; @@ -133,22 +133,27 @@ unless (defined $Stat{$file}) { $Stat{$file} = $^T; } - + # remove the modules if ($mtime > $Stat{$file}) { delete $INC{$key}; - # warn "Reloading $key\n"; - if (my $symref = $UndefFields{$key}) { -# warn "undeffing fields\n"; - no strict 'refs'; - undef %{$symref}; - } - require $key; - warn("Apache::Reload: process $$ reloading $key\n") - if $DEBUG; - } + push @changed, $key; + } $Stat{$file} = $mtime; } - + + # reload the modules + foreach my $key (@changed) { + warn("Reloading $key\n") if $DEBUG; + if (my $symref = $UndefFields{$key}) { + warn("undeffing fields\n") if $DEBUG; + no strict 'refs'; + undef %{$symref}; + } + require $key; + warn("Apache::Reload: process $$ reloading $key\n") + if $DEBUG; + } + return 1; }