From: http://smcv.pseudorandom.co.uk/ Date: Sun, 3 Aug 2008 15:24:20 +0000 (-0400) Subject: (no commit message) X-Git-Tag: 2.60~107^2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=eadff687abbec442423967d5cba3bcfb606dc1a9;p=ikiwiki.git --- diff --git a/doc/bugs/Warns_about_use_of_uninitialized_value_if_prefix__95__directives_is_on_and_a_directive_does_not_contain_a_space.mdwn b/doc/bugs/Warns_about_use_of_uninitialized_value_if_prefix__95__directives_is_on_and_a_directive_does_not_contain_a_space.mdwn new file mode 100644 index 000000000..6274f1299 --- /dev/null +++ b/doc/bugs/Warns_about_use_of_uninitialized_value_if_prefix__95__directives_is_on_and_a_directive_does_not_contain_a_space.mdwn @@ -0,0 +1,17 @@ +In `IkiWiki::preprocess`, the last capturing group in the regex used to parse directives in prefix_directives mode is of the form `(\s+...)?\]\]`, which will not be matched if the directive is something without arguments or whitespace, like `\[[!orphans]]`. As a result, its value is undef instead of being an empty string, causing a warning when it is used in the anonymous sub `$handle`. A trivial fix is to treat it as "" if it is undef. + +[[patch]] in the master branch of my git repository, and quoted here. --[[smcv]] + + diff --git a/IkiWiki.pm b/IkiWiki.pm + index 241a7c0..d2c35a2 100644 + --- a/IkiWiki.pm + +++ b/IkiWiki.pm + @@ -1167,7 +1167,8 @@ sub preprocess ($$$;$$) { #{{{ + }sx; + } + + - $content =~ s{$regex}{$handle->($1, $2, $3, $4)}eg; + + # $4 can be undef if the directive was \[[!foo]] + + $content =~ s{$regex}{$handle->($1, $2, $3, ($4 or ""))}eg; + return $content; + } #}}}