Fix nasty approxidate bug

From: Linus Torvalds <torvalds@osdl.org>
Date: 2016-06-15 22:42:15
Subsystem: the rest · Maintainer: Linus Torvalds

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);
 }
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help