]> git.eshelyaron.com Git - emacs.git/commitdiff
Port to NetBSD tzalloc
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 11 Mar 2018 08:18:34 +0000 (00:18 -0800)
committerAndrew G Cohen <cohen@andy.bu.edu>
Tue, 11 Dec 2018 06:15:03 +0000 (14:15 +0800)
Problem reported by Valery Ushakov (Bug#30738).
* src/editfns.c (xtzalloc): Remove.
(invalid_time_zone_specification): New function.
(tzlookup): Port to NetBSD, where tzalloc can fail when the TZ
string has an invalid value.

src/editfns.c

index 3a34dd0980b77f6055a255478eace841ebd78a4b..debe10572dcb49ee75f1647e1e7f330e385b3d66 100644 (file)
@@ -117,14 +117,10 @@ emacs_mktime_z (timezone_t tz, struct tm *tm)
   return t;
 }
 
-/* Allocate a timezone, signaling on failure.  */
-static timezone_t
-xtzalloc (char const *name)
+static _Noreturn void
+invalid_time_zone_specification (Lisp_Object zone)
 {
-  timezone_t tz = tzalloc (name);
-  if (!tz)
-    memory_full (SIZE_MAX);
-  return tz;
+  xsignal2 (Qerror, build_string ("Invalid time zone specification"), zone);
 }
 
 /* Free a timezone, except do not free the time zone for local time.
@@ -205,9 +201,15 @@ tzlookup (Lisp_Object zone, bool settz)
            }
        }
       else
-       xsignal2 (Qerror, build_string ("Invalid time zone specification"),
-                 zone);
-      new_tz = xtzalloc (zone_string);
+       invalid_time_zone_specification (zone);
+
+      new_tz = tzalloc (zone_string);
+      if (!new_tz)
+       {
+         if (errno == ENOMEM)
+           memory_full (SIZE_MAX);
+         invalid_time_zone_specification (zone);
+       }
     }
 
   if (settz)