Improve port to NetBSD tzalloc
Problem reported by Valery Ushakov (Bug#30738#13). * src/editfns.c (tzlookup) [__NetBSD_Version__ < 700000000]: If tzalloc fails for any reason other than memory exhaustion, assume it’s because NetBSD 6 does not support tzalloc on POSIX-format TZ strings, and fall back on tzdb if possible.
This commit is contained in:
parent
711b94c8bb
commit
64a1da4989
1 changed files with 12 additions and 0 deletions
|
@ -204,6 +204,18 @@ tzlookup (Lisp_Object zone, bool settz)
|
|||
invalid_time_zone_specification (zone);
|
||||
|
||||
new_tz = tzalloc (zone_string);
|
||||
|
||||
#if defined __NetBSD_Version__ && __NetBSD_Version__ < 700000000
|
||||
/* NetBSD 6 tzalloc mishandles POSIX TZ strings (Bug#30738).
|
||||
If possible, fall back on tzdb. */
|
||||
if (!new_tz && errno != ENOMEM && plain_integer
|
||||
&& XINT (zone) % (60 * 60) == 0)
|
||||
{
|
||||
sprintf (tzbuf, "Etc/GMT%+"pI"d", - (XINT (zone) / (60 * 60)));
|
||||
new_tz = tzalloc (zone_string);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!new_tz)
|
||||
{
|
||||
if (errno == ENOMEM)
|
||||
|
|
Loading…
Add table
Reference in a new issue