>From 46844ad78968cd804d0e5fc98ce49b46b3d8a53d Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 11 Mar 2018 00:18:34 -0800 Subject: [PATCH] Port to NetBSD tzalloc 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 | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/editfns.c b/src/editfns.c index 3a34dd0980..debe10572d 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -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) -- 2.14.3