Re: [BUG] minor: wrong handling of GIT_AUTHOR_DATE

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [BUG] minor: wrong handling of GIT_AUTHOR_DATE

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:45:10

Linus Torvalds [off-list ref] writes:
[ Those four deleted lines I removed just because the cases had already 
  been handled, eg the ">1900" case was already handled when we checked 
  for a four-digit year, and the >70 case was handled when we checked for 
  exactly two digits ]

Hmm?
quoted hunk
@@ -488,10 +504,6 @@ static int match_digit(const char *date, struct tm *tm, int *offset, int *tm_gmt
 
 	if (num > 0 && num < 32) {
 		tm->tm_mday = num;
-	} else if (num > 1900) {
-		tm->tm_year = num - 1900;
-	} else if (num > 70) {
-		tm->tm_year = num;
 	} else if (num > 0 && num < 13) {
 		tm->tm_mon = num-1;
 	}
The comment above this part says we always favor mday over mon, but I
wonder why this sequence is not like:

	if (tm->tm_mday is not set && num > 0 && num < 32)
		tm->tm_mday = num;
	else if (tm->tm_mon is not set && num > 0 && num < 13)
		tm->tm_mon = num - 1;

Is this because we do not initialize tm fields to "unknown" in the
beginning?  I admit I haven't bothered to look at this part of the code
for a looong time.

Re: [BUG] minor: wrong handling of GIT_AUTHOR_DATE

From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2016-06-15 22:45:10


On Sat, 16 Aug 2008, Junio C Hamano wrote:
Is this because we do not initialize tm fields to "unknown" in the
beginning?  I admit I haven't bothered to look at this part of the code
for a looong time.
Indeed. The _exact_ date handling initializes the date to -1 (and the 
time to 0), but the approxidate thing defaults to "now" and then modifies 
that. 

Which is why we'd need to have a separate flags field for "I have 
initialized this field".

		Linus
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help