From beb98631d782d976c952182c398033db5f6a8c04 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 19 Dec 2016 18:08:19 +0000 Subject: [PATCH] [Minor] Add cleanup --- src/libmime/mime_headers.c | 12 +++++++++--- src/libmime/mime_headers.h | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libmime/mime_headers.c b/src/libmime/mime_headers.c index 9d36abf88..9503862ce 100644 --- a/src/libmime/mime_headers.c +++ b/src/libmime/mime_headers.c @@ -341,7 +341,7 @@ rspamd_mime_header_maybe_save_token (rspamd_mempool_t *pool, GString *out, memcpy (old_charset, new_charset, sizeof (*old_charset)); } -GString * +gchar * rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in, gsize inlen) { @@ -365,7 +365,9 @@ rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in, c = in; p = in; end = in + inlen; - out = g_string_sized_new (inlen); + out = rspamd_mempool_alloc0 (pool, sizeof (*out)); + g_string_set_size (out, inlen); + out->len = 0; token = g_byte_array_sized_new (80); decoded = g_byte_array_sized_new (122); @@ -501,5 +503,9 @@ rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in, break; } - return out; + g_byte_array_free (token, TRUE); + g_byte_array_free (decoded, TRUE); + rspamd_mempool_add_destructor (pool, g_free, out->str); + + return out->str; } diff --git a/src/libmime/mime_headers.h b/src/libmime/mime_headers.h index b1a048fd8..4d2597c84 100644 --- a/src/libmime/mime_headers.h +++ b/src/libmime/mime_headers.h @@ -55,7 +55,7 @@ void rspamd_mime_headers_process (struct rspamd_task *task, GHashTable *target, * @param inlen * @return */ -GString * rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in, +gchar * rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in, gsize inlen); #endif /* SRC_LIBMIME_MIME_HEADERS_H_ */ -- 2.39.5