This because tm.tm_isdst is set by localtime_r() using "now" set by time(NULL).
It is nonsensical to specify a date to convert and have the DST flag used in the conversion set from another (i.e. the current) date.
With the patch (set tm.tm_isdst to -1 and leave mktime() to figure it out), it is correct under all circumstances:
Currently (in the UK, pre-DST, with "now" set to 1711500000):
Next week (post-DST, with "now" set to 1712000000):
This because tm.tm_isdst is set by localtime_r() using "now" set by time(NULL). It is nonsensical to specify a date to convert and have the DST flag used in the conversion set from another (i.e. the current) date.
With the patch (set tm.tm_isdst to -1 and leave mktime() to figure it out), it is correct under all circumstances:
For reference: