Fix crash that could occur when a needsbuild hook returned a file that does not exist.

I saw this happen with calendar, when it wanted to update a page, that
had a calendar on it, but the page had just been deleted. This caused
srcfile_stat to crash.
master
Joey Hess 2013-07-10 17:02:24 -04:00
parent 533793ee46
commit acb07ef416
2 changed files with 11 additions and 1 deletions

View File

@ -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);

2
debian/changelog vendored
View File

@ -15,6 +15,8 @@ ikiwiki (3.20130519) UNRELEASED; urgency=low
accessed via https.
* The ip() pagespec can now contain glob characters to match eg, a subnet
full of spammers.
* Fix crash that could occur when a needsbuild hook returned a file
that does not exist.
-- Joey Hess <joeyh@debian.org> Sun, 23 Jun 2013 14:02:01 -0400