Fix crash that can occur when only_committed_changes is set and a file is deleted...
authorJoey Hess <joey@kitenet.net>
Fri, 26 Sep 2014 22:55:09 +0000 (18:55 -0400)
committerJoey Hess <joey@kitenet.net>
Fri, 26 Sep 2014 22:55:09 +0000 (18:55 -0400)
commit6294894f314970d428b12891547b07bef2e07352
treee43b4b6267ee9fd34b6b02c317fd5c5fc5d4b62c
parentb6299a2b67bfe3e67d354e4152786455ab30ac87
Fix crash that can occur when only_committed_changes is set and a file is deleted from the underlay.

srcfile_stat got called on a file from the underlay that no longer existed.

I am not 100% sure of the circumstances of that; I was able to reproduce
the bug but neglected to snapshot the tree, and then accidentially
got it to stop crashing. I know that a transient tag page got deleted using
the web interface to trigger the crash.

It seems that process_changed_files must have returned the file, despite it
being deleted. And since the file was not checked into git, it seems it
must have not been included in @IkiWiki::underlayfiles, which would have
caused process_changed_files to not return it.

I do not know why a transient tag page would not be in
@IkiWiki::underlayfiles. There is a bug here that I don't understand.

This is just a workaround -- run srcfile_stat such that it won't crash,
and if it is unable to stat a file, find_changed knows it's not changed,
so it's ok to skip it.

Also made find_new_files run srcfile_stat such that it won't crash, just
because I was there.
IkiWiki/Render.pm
debian/changelog