parse_date_basic(): return early when given a bogus timestamp

When the input does not have GMT timezone offset, the code computes
it by computing the local and GMT time for the given timestamp. But
there is no point doing so if the given timestamp is known to be a
bogus one.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2015-04-15 08:43:58 -07:00
parent 282616c72d
commit 7fcec48da9

6
date.c
View File

@ -696,6 +696,9 @@ int parse_date_basic(const char *date, unsigned long *timestamp, int *offset)
/* mktime uses local timezone */
*timestamp = tm_to_time_t(&tm);
if (*timestamp == -1)
return -1;
if (*offset == -1) {
time_t temp_time = mktime(&tm);
if ((time_t)*timestamp > temp_time) {
@ -705,9 +708,6 @@ int parse_date_basic(const char *date, unsigned long *timestamp, int *offset)
}
}
if (*timestamp == -1)
return -1;
if (!tm_gmt)
*timestamp -= *offset * 60;
return 0; /* success */