summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-08-29 18:40:41 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-08-29 18:40:41 -0400
commit75a096d056270d5b20f19a55416436d731654105 (patch)
treecff81f6b8bb11bb5779770a8b2efc70b3ac3a46d
parenta8d9f1c5cd1bbceef5d946aae54e0432b7bfb40a (diff)
Work around perl $_ scoping nonsense that caused breakage when loading external plugins.
-rw-r--r--IkiWiki.pm4
-rw-r--r--debian/changelog2
-rw-r--r--doc/bugs/methodResponse_in_add__95__plugins.mdwn7
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