aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/timezone/localtime.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/timezone/localtime.c b/src/timezone/localtime.c
index 985ad56da20..a14215d6bde 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