From 96e0848d811ff79c765d84ea5b82ca075ceba282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20R=C3=BChsen?= Date: Sat, 2 Jan 2016 13:31:53 +0100 Subject: [PATCH] Release unused memory after loading DAFSA data --- src/psl.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/psl.c b/src/psl.c index ea08c76..10947e7 100644 --- a/src/psl.c +++ b/src/psl.c @@ -1127,6 +1127,7 @@ psl_ctx_t *psl_load_fp(FILE *fp) buf[n] = 0; if (!strstr(buf, "This Source Code Form is subject to")) { + void *m; size_t size = 65536, len = n; if (!(psl->dafsa = malloc(size))) @@ -1137,13 +1138,16 @@ psl_ctx_t *psl_load_fp(FILE *fp) while ((n = fread(psl->dafsa + len, 1, size - len, fp)) > 0) { len += n; if (len >= size) { - void *m = realloc(psl->dafsa, size *= 2); - if (!m) + if (!(m = realloc(psl->dafsa, size *= 2))) goto fail; psl->dafsa = m; } } + /* release unused memory */ + if ((m = realloc(psl->dafsa, len))) + psl->dafsa = m; + return psl; }