From 8a29361c321b54607ba5b4a7675508325b450110 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 17 Mar 2008 14:04:59 -0400 Subject: [PATCH] * Detect invalid pagespecs and do not merge them in add_depends, as that can result in a broken merged pagespec that matches nothing. --- IkiWiki.pm | 13 +++++++++++++ debian/changelog | 2 ++ 2 files changed, 15 insertions(+) diff --git a/IkiWiki.pm b/IkiWiki.pm index 668de7e93..bd804269d 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1106,6 +1106,8 @@ sub add_depends ($$) { #{{{ my $page=shift; my $pagespec=shift; + return unless pagespec_valid($pagespec); + if (! exists $depends{$page}) { $depends{$page}=$pagespec; } @@ -1234,6 +1236,17 @@ sub pagespec_match ($$;@) { #{{{ return $ret; } #}}} +sub pagespec_valid ($) { #{{{ + my $spec=shift; + + # used by generated code + my $page=""; + my @params; + + eval pagespec_translate($spec); + return ! $@; +} #}}} + package IkiWiki::FailReason; use overload ( #{{{ diff --git a/debian/changelog b/debian/changelog index c9fd64a2a..dc950790f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -45,6 +45,8 @@ ikiwiki (2.41) UNRELEASED; urgency=low * external: Add getargv and setargv methods to allow access to ikiwiki's @ARGV. * Correct bug in encoding of %pagestate keys, fixes edittemplate. + * Detect invalid pagespecs and do not merge them in add_depends, + as that can result in a broken merged pagespec that matches nothing. -- martin f. krafft Sun, 02 Mar 2008 17:46:38 +0100 -- 2.44.0