enh via tz <tz@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 a lot. -- Russ Allbery (eagle@eyrie.org) <http://www.eyrie.org/~eagle/>