Improve port to NetBSD tzalloc
Problem reported by Valery Ushakov (Bug#30738#22). * src/editfns.c (HAVE_TZALLOC_BUG): New macro. (tzlookup): Use it. Compile on all platforms, not just on NetBSD.
This commit is contained in:
parent
6b168a3b24
commit
6d12e7af88
1 changed files with 13 additions and 5 deletions
|
@ -48,6 +48,16 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
#include <float.h>
|
||||
#include <limits.h>
|
||||
|
||||
#ifdef HAVE_TIMEZONE_T
|
||||
# include <sys/param.h>
|
||||
# if defined __NetBSD_Version__ && __NetBSD_Version__ < 700000000
|
||||
# define HAVE_TZALLOC_BUG true
|
||||
# endif
|
||||
#endif
|
||||
#ifndef HAVE_TZALLOC_BUG
|
||||
# define HAVE_TZALLOC_BUG false
|
||||
#endif
|
||||
|
||||
#include <c-ctype.h>
|
||||
#include <intprops.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -205,16 +215,14 @@ tzlookup (Lisp_Object zone, bool settz)
|
|||
|
||||
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
|
||||
if (HAVE_TZALLOC_BUG && !new_tz && errno != ENOMEM && plain_integer
|
||||
&& XINT (zone) % (60 * 60) == 0)
|
||||
{
|
||||
/* tzalloc mishandles POSIX strings; fall back on tzdb if
|
||||
possible (Bug#30738). */
|
||||
sprintf (tzbuf, "Etc/GMT%+"pI"d", - (XINT (zone) / (60 * 60)));
|
||||
new_tz = tzalloc (zone_string);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!new_tz)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue