[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 64a1da4: Improve port to NetBSD tzalloc
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] master 64a1da4: Improve port to NetBSD tzalloc |
Date: |
Thu, 15 Mar 2018 12:36:32 -0400 (EDT) |
branch: master
commit 64a1da4989b0551481600facb1781ac92089d182
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>
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.
---
src/editfns.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/editfns.c b/src/editfns.c
index 6ecc83f..d263194 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 64a1da4: Improve port to NetBSD tzalloc,
Paul Eggert <=