fix approxidate parsing of relative months and years
These were broken by b5373e9. The problem is that the code marks the month and year with "-1" for "we don't know it yet", but the month and year code paths were not adjusted to fill in the current time before doing their calculations (whereas other units follow a different code path and are fine). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
34dc6e73b0
commit
931e8e27d9
5
date.c
5
date.c
@ -857,7 +857,9 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
|
||||
}
|
||||
|
||||
if (match_string(date, "months") >= 5) {
|
||||
int n = tm->tm_mon - *num;
|
||||
int n;
|
||||
update_tm(tm, now, 0); /* fill in date fields if needed */
|
||||
n = tm->tm_mon - *num;
|
||||
*num = 0;
|
||||
while (n < 0) {
|
||||
n += 12;
|
||||
@ -868,6 +870,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
|
||||
}
|
||||
|
||||
if (match_string(date, "years") >= 4) {
|
||||
update_tm(tm, now, 0); /* fill in date fields if needed */
|
||||
tm->tm_year -= *num;
|
||||
*num = 0;
|
||||
return end;
|
||||
|
Reference in New Issue
Block a user