[tz] why does mktime binary search?
eagle at eyrie.org
Fri Jul 29 20:54:28 UTC 2016
enh via tz <tz at iana.org> writes:
> this came up on Android because we had some code that did "errno = 0;
> mktime(...); if (errno == EOVERFLOW) ..." rather than checking the
> return value of mktime. this failed for us because the tzcode mktime
> sets errno even on non-failure.
Separate from the question of whether binary search is a good idea...
This is, in general, an error in C programming unless the C API
specifically documents this error checking pattern (strtol is one of the
few APIs that does). If you call a library function that is documented as
setting errno, and it does not return an error, errno is undefined. glibc
sets errno to various things on non-failure in many of its interfaces, so
code that assumes errno will only be non-zero on failure is going to break
Russ Allbery (eagle at eyrie.org) <http://www.eyrie.org/~eagle/>
More information about the tz