aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki')
-rw-r--r--IkiWiki/Render.pm10
1 files changed, 9 insertions, 1 deletions
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index a90d202ee..c41dac9f6 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -770,9 +770,17 @@ sub refresh () {
my ($new, $internal_new)=find_new_files($files);
my ($del, $internal_del)=find_del_files($pages);
my ($changed, $internal_changed)=find_changed($files);
+ my %existingfiles;
run_hooks(needsbuild => sub {
my $ret=shift->($changed, [@$del, @$internal_del]);
- $changed=$ret if ref $ret eq 'ARRAY';
+ if (ref $ret eq 'ARRAY') {
+ if (! %existingfiles) {
+ foreach my $f (@$files) {
+ $existingfiles{$f}=1;
+ }
+ }
+ @$changed=grep $existingfiles{$_}, @$ret;
+ }
});
my $oldlink_targets=calculate_old_links($changed, $del);