summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-07-21 16:38:40 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-07-21 16:38:40 -0400
commitd724a26754b3018ff6b119bb016c5ba261a51d0e (patch)
treedeb529d2e0156ac5b039397c9c44c32a5a9b3024
parentd9af10a1be44c63c6565a46fbd7bcf18424e5b41 (diff)
avoid internal error message when img uses just-deleted page
I think this used to be a fatal error, not just inline error, so I don't know why it was never noticed, but if a page that an img directive mentions gets deleted, bestlink() returns a file that no longer exists, and srcfile() throws an error. Note that bestlink's behavior of returning a deleted file could be considered buggy. But, if it's changed to not do that, the page with the img on it is not updated at all when the file is removed.
-rw-r--r--IkiWiki/Plugin/img.pm10
1 files changed, 7 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm
index 17a9367d3..42de81bd1 100644
--- a/IkiWiki/Plugin/img.pm
+++ b/IkiWiki/Plugin/img.pm
@@ -41,6 +41,10 @@ sub preprocess (@) { #{{{
}
my $file = bestlink($params{page}, $image);
+ my $srcfile = srcfile($file, 1);
+ if (! defined $srcfile) {
+ error(sprintf(gettext("%s not found"), $image));
+ }
my $dir = $params{page};
my $base = IkiWiki::basename($file);
@@ -61,12 +65,12 @@ sub preprocess (@) { #{{{
will_render($params{page}, $imglink);
- if (-e $outfile && (-M srcfile($file) >= -M $outfile)) {
+ if (-e $outfile && (-M $srcfile >= -M $outfile)) {
$r = $im->Read($outfile);
error sprintf(gettext("failed to read %s: %s"), $outfile, $r) if $r;
}
else {
- $r = $im->Read(srcfile($file));
+ $r = $im->Read($srcfile);
error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r;
$r = $im->Resize(geometry => "${w}x${h}");
@@ -83,7 +87,7 @@ sub preprocess (@) { #{{{
}
}
else {
- $r = $im->Read(srcfile($file));
+ $r = $im->Read($srcfile);
error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r;
$imglink = $file;
}