X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/96566c33a79a1628a75bc573d924fd3be8b6b37d..32a3d8efaa64077892f5124982174d5985254935:/IkiWiki/Plugin/calendar.pm

diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
index f0ac9acf9..c03b89667 100644
--- a/IkiWiki/Plugin/calendar.pm
+++ b/IkiWiki/Plugin/calendar.pm
@@ -115,7 +115,7 @@ sub build_affected {
 		$affected{calendarlink($ayear)} = sprintf(gettext("building calendar for %s, its previous or next year has changed"), $ayear) if ($valid);
 		($ayear, $valid) = previousyear($year, $config{archivebase});
 		$affected{calendarlink($ayear)} = sprintf(gettext("building calendar for %s, its previous or next year has changed"), $ayear) if ($valid);
-		foreach my $month (keys $changed{$year}) {
+		foreach my $month (keys %{$changed{$year}}) {
 			($ayear, $amonth, $valid) = nextmonth($year, $month, $config{archivebase});
 			$affected{calendarlink($ayear, sprintf("%02d", $amonth))} = sprintf(gettext("building calendar for %s/%s, its previous or next month has changed"), $amonth, $ayear) if ($valid);
 			($ayear, $amonth, $valid) = previousmonth($year, $month, $config{archivebase});
@@ -193,7 +193,7 @@ sub gencalendaryear {
 		}
 
 		# Filling potential gaps in years (e.g. calendar goes from 2010 to 2014,
-		# and we just added year 2005. We have to had years 2006 to 2009).
+		# and we just added year 2005. We have to add years 2006 to 2009).
 		return if $params{norecurse};
 		if ($wikistate{calendar}{minyear} > $year) {
 			foreach my $other ($year + 1 .. $wikistate{calendar}{minyear} - 1) {
@@ -221,6 +221,10 @@ sub previousmonth($$$) {
 	my $month = shift;
 	my $archivebase = shift;
 
+	if (not exists $wikistate{calendar}{minyear}) {
+		$wikistate{calendar}{minyear} = $year;
+	}
+
 	my $pmonth = $month;
 	my $pyear  = $year;
 	while ((not exists $pagesources{"$archivebase/$pyear/" . sprintf("%02d", $pmonth)}) or ($pmonth == $month and $pyear == $year)) {
@@ -239,6 +243,10 @@ sub nextmonth($$$) {
 	my $month = shift;
 	my $archivebase = shift;
 
+	if (not exists $wikistate{calendar}{maxyear}) {
+		$wikistate{calendar}{maxyear} = $year;
+	}
+
 	my $nmonth = $month;
 	my $nyear  = $year;
 	while ((not exists $pagesources{"$archivebase/$nyear/" . sprintf("%02d", $nmonth)}) or ($nmonth == $month and $nyear == $year)) {