threads / bug / 2968

Fix nasty approxidate bug

Subject: Fix nasty approxidate bug

## tl;dr

One message between Jan 5, 2006 and Jan 5, 2006.

replies: 0people: 1as markdown or json

Linus Torvalds· Jan 5, 2006, 03:33 UTC · lore
Stupid me.

If approxidate ends up with a month that is ahead of the current month, it decrements the year to last year.

Which is correct, and means that "last december" does the right thing.
HOWEVER. It should only do so if the year is the same as the current year.

Without this fix, "5 days ago" ends up being in 2004, because it first decrements five days, getting us to December 2005 (correct), but then it also ends up decrementing the year once more to turn that December into "last year" (incorrect, since it already _was_ last year).

Duh. Pass me a donut.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
diff --git a/date.c b/date.c
index 3e11500..73037c7 100644
--- a/date.c
+++ b/date.c
@@ -640,7 +640,7 @@ unsigned long approxidate(const char *da
 	}
 	if (number > 0 && number < 32)
 		tm.tm_mday = number;
-	if (tm.tm_mon > now.tm_mon)
+	if (tm.tm_mon > now.tm_mon && tm.tm_year == now.tm_year)
 		tm.tm_year--;
 	return mktime(&tm);
 }

← back to recent threads