Work around perl $_ scoping nonsense that caused breakage when loading external plugins.
authorJoey Hess <joey@kodama.kitenet.net>
Fri, 29 Aug 2008 22:40:41 +0000 (18:40 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Fri, 29 Aug 2008 22:40:41 +0000 (18:40 -0400)
IkiWiki.pm
debian/changelog
doc/bugs/methodResponse_in_add__95__plugins.mdwn

index e4765219e60bdd9c7408aaf4425b1657ae1f618d..64ef6585f00b351b952008f1f21ff2fb40cfee07 100644 (file)
@@ -471,7 +471,9 @@ sub loadplugins () { #{{{
                unshift @INC, possibly_foolish_untaint($config{libdir});
        }
 
-       loadplugin($_) foreach @{$config{default_plugins}}, @{$config{add_plugins}};
+       foreach my $plugin (@{$config{default_plugins}}, @{$config{add_plugins}}) {
+               loadplugin($plugin);
+       }
        
        if ($config{rcs}) {
                if (exists $IkiWiki::hooks{rcs}) {
index c6fa4261c8eabe7d0d9a687386801b9657434c1d..46c40bf5e7094d77c924070fc2db4cb115466dca 100644 (file)
@@ -4,6 +4,8 @@ ikiwiki (2.63) UNRELEASED; urgency=low
   * Typo. Closes: #497003
   * Ignore failure to install files into /etc, in case install is running as
     non-root.
+  * Work around perl $_ scoping nonsense that caused breakage when loading
+    external plugins.
 
  -- Joey Hess <joeyh@debian.org>  Thu, 28 Aug 2008 16:08:18 -0400
 
index 64a919cec5d2209d2b2069434d4756b595bd3999..8a88f4eda4baad883c157a891cc5461b93459e13 100644 (file)
 
 **patch comment:** solves the problem on 2.61. as these are the first lines of perl i've knowingly written, i can not explain what exactly was happening there.
 
+> Perl's `$_` handling is the worst wart on it, or possibly any language.
+> Here it's an alias to the actual value in the array, and when deep
+> in the external plugin load code something resets `$_` to a different
+> value, the alias remains and it changes the value at a distance.
+> 
+> Thanks for the excellent problem report, [[fixed|done]]. --[[Joey]]
+
 ------------------------------------------------------------------------------
     diff --git a/IkiWiki.pm b/IkiWiki.pm
     index e476521..d43abd4 100644