diff options
-rw-r--r-- | IkiWiki/Render.pm | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 8e998e8b2..e97f46775 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -84,7 +84,7 @@ sub parentlinks ($) { #{{{ return @ret; } #}}} -my @preprocessing; +my %preprocessing; sub preprocess ($$$) { #{{{ my $page=shift; # the page the data comes from my $destpage=shift; # the page the data will appear in (different for inline) @@ -97,7 +97,7 @@ sub preprocess ($$$) { #{{{ if (length $escape) { return "[[$command $params]]"; } - elsif (grep { $_ eq $page } @preprocessing) { + elsif ($preprocessing{$page}) { # Avoid loops of preprocessed pages preprocessing # other pages that preprocess them, etc. return "[[$command would cause preprocessing loop]]"; @@ -129,13 +129,13 @@ sub preprocess ($$$) { #{{{ push @params, $val, ''; } } - push @preprocessing, $page; + $preprocessing{$page}=1; my $ret=$hooks{preprocess}{$command}{call}->( @params, page => $page, destpage => $destpage, ); - pop @preprocessing; + delete $preprocessing{$page}; return $ret; } else { |