diff --git a/src/editfns.c b/src/editfns.c index cb7353a48c6..7e35fe87972 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -48,6 +48,16 @@ along with GNU Emacs. If not, see . */ #include #include +#ifdef HAVE_TIMEZONE_T +# include +# 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 #include #include @@ -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) {