On 6/6/22 15:56, enh wrote:
it's your mktime(), so you tell me :-)
tzdb mktime doesn't make any attempt to preserve errno on success. Even on a platform like bionic with primitives following a preserve-errno-on-success philosophy, tzdb functions can succeed after calling other functions that may fail and set errno. For example, tzset_unlocked can recover from a failed zoneinit (which sets errno) by calling zoneinit again.
in bionic we use RAII to make functions "errno clean" all the time to avoid this kind of problem because it's too hard to reason about...)
If we wanted to make tzdb localtime.c and strftime.c "errno clean" it'd require some careful work. It'd be doable but I expect it's not a one-hour job (though perhaps you could prove me wrong :-).