diff --git a/src/timezone/localtime.c b/src/timezone/localtime.c index 985ad56da20e3817c8d495afd1b75880e8b1b8f0..a14215d6bde177847c005020431d7df809d7fbd4 100644 --- a/src/timezone/localtime.c +++ b/src/timezone/localtime.c @@ -536,9 +536,17 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, int tzload(const char *name, char *canonname, struct state * sp, bool doextend) { - union local_storage ls; + union local_storage *lsp = malloc(sizeof *lsp); - return tzloadbody(name, canonname, sp, doextend, &ls); + if (!lsp) + return errno; + else + { + int err = tzloadbody(name, canonname, sp, doextend, lsp); + + free(lsp); + return err; + } } static bool