On Tue, Apr 01, 2014 at 12:07:22PM -0700, Junio C Hamano wrote:
> Jeff King <[email protected]> writes:
>
> > On Fri, Mar 28, 2014 at 12:30:02PM -0700, Junio C Hamano wrote:
> >
> >> Let's just deal with a simple known cases (like FreeBSD) in the real
> >> code that everybody exercises at runtime, and have the new test only
> >> check we do not segfault on a value we used to segfault upon seeing.
> >
> > OK. Here it is, with the other option as an "alt" patch for reference.
> >
> > [1/2]: date: recognize bogus FreeBSD gmtime output
> > [2/2]: t4212: loosen far-in-future test for AIX
> > [2alt/2]: work around unreliable gmtime errors on AIX
> >
> > -Peff
>
> Thanks. 2alt does not look too bad, but on the other hand, we are
> replacing a value that can produce the right result on correctly
> implemented gmtime with a completely bogus value only because we
> know there exists one broken implementation---which does not sound a
> very good trade-off, given that we would get a result that does not
> correspond to the input anyway with or without the change on the
> broken implementation.
One other option is to push _all_ callers through a git_gmtime()
wrapper, and then use Makefile knobs to turn on specific quirks, like:
struct tm *git_gmtime_r(const time_t *timep, struct tm *result)
{
#ifdef GMTIME_OVERFLOWS_32BIT
if (*timep > 999999999999999)
return NULL;
#endif
ret = gmtime_r(timep, result);
#ifdef GMTIME_ERROR_BLANK
if (ret && !ret->tm_mday)
return NULL;
#endif
return ret;
}
and then each platform can turn the knobs as appropriate.
-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html