diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-08-29 18:40:41 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-08-29 18:40:41 -0400 |
commit | 75a096d056270d5b20f19a55416436d731654105 (patch) | |
tree | cff81f6b8bb11bb5779770a8b2efc70b3ac3a46d | |
parent | a8d9f1c5cd1bbceef5d946aae54e0432b7bfb40a (diff) |
Work around perl $_ scoping nonsense that caused breakage when loading external plugins.
-rw-r--r-- | IkiWiki.pm | 4 | ||||
-rw-r--r-- | debian/changelog | 2 | ||||
-rw-r--r-- | doc/bugs/methodResponse_in_add__95__plugins.mdwn | 7 |
3 files changed, 12 insertions, 1 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index e4765219e..64ef6585f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -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}) { diff --git a/debian/changelog b/debian/changelog index c6fa4261c..46c40bf5e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 diff --git a/doc/bugs/methodResponse_in_add__95__plugins.mdwn b/doc/bugs/methodResponse_in_add__95__plugins.mdwn index 64a919cec..8a88f4eda 100644 --- a/doc/bugs/methodResponse_in_add__95__plugins.mdwn +++ b/doc/bugs/methodResponse_in_add__95__plugins.mdwn @@ -14,6 +14,13 @@ **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 |