]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
use a hash
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Fri, 25 Aug 2006 22:08:03 +0000 (22:08 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Fri, 25 Aug 2006 22:08:03 +0000 (22:08 +0000)
IkiWiki/Render.pm

index 8e998e8b2fdfd248ef118fdcf3b3cf0e8262891b..e97f46775f47a1a72b45de339aa7ac46ab1c4e7d 100644 (file)
@@ -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 {