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)
{