diff options
-rw-r--r-- | IkiWiki/Plugin/aggregate.pm | 4 | ||||
-rw-r--r-- | debian/changelog | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 6f9c78075..1add53987 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -220,9 +220,11 @@ sub expire () { #{{{ foreach my $feed (values %feeds) { next unless $feed->{expireage} || $feed->{expirecount}; my $count=0; + my %seen; foreach my $item (sort { $IkiWiki::pagectime{$b->{page}} <=> $IkiWiki::pagectime{$a->{page}} } - grep { exists $_->{page} && $_->{feed} eq $feed->{name} && $IkiWiki::pagectime{$_->{page}} } + grep { exists $_->{page} && ! exists $seen{$_->{page}} && $_->{feed} eq $feed->{name} && $IkiWiki::pagectime{$_->{page}} } values %guids) { + $seen{$item}=1; if ($feed->{expireage}) { my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24; if ($days_old > $feed->{expireage}) { diff --git a/debian/changelog b/debian/changelog index 9684a02d5..3817f142a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,12 @@ ikiwiki (2.12) UNRELEASED; urgency=low * Fix some issues with toggles in preview mode. + * Fix an aggregate plugin expiry bug. Over time, it's possible for the same + page name to be expired and reused for several distinct guids. When this + happened, the expiry code counted each past guid that had used that page + name as a currently existing page, and thus expired too many pages. - -- Joey Hess <joeyh@debian.org> Mon, 29 Oct 2007 17:15:04 -0400 + -- Joey Hess <joeyh@debian.org> Tue, 30 Oct 2007 22:47:36 -0400 ikiwiki (2.11) unstable; urgency=low |