Mercurial > dovecot > core-2.2
changeset 18726:d097a9779c37
lib-fts: Call u_clean() at deinit to free up all of libicu's memory.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 18 May 2015 06:51:24 -0400 |
parents | c2ce65bb1caf |
children | 713476fa84af |
files | src/lib-fts/fts-filter-normalizer-icu.c src/lib-fts/test-fts-icu.c |
diffstat | 2 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-fts/fts-filter-normalizer-icu.c Mon May 18 06:46:32 2015 -0400 +++ b/src/lib-fts/fts-filter-normalizer-icu.c Mon May 18 06:51:24 2015 -0400 @@ -10,6 +10,8 @@ #ifdef HAVE_LIBICU #include "fts-icu.h" +#include <unicode/uclean.h> + struct fts_filter_normalizer_icu { struct fts_filter filter; pool_t pool; @@ -22,6 +24,8 @@ string_t *utf8_token; }; +static bool icu_exit_callback_set = FALSE; + static void fts_filter_normalizer_icu_destroy(struct fts_filter *filter) { struct fts_filter_normalizer_icu *np = @@ -54,6 +58,11 @@ } } + if (!icu_exit_callback_set) { + icu_exit_callback_set = TRUE; + lib_atexit(u_cleanup); + } + pp = pool_alloconly_create(MEMPOOL_GROWING"fts_filter_normalizer_icu", sizeof(struct fts_filter_normalizer_icu)); np = p_new(pp, struct fts_filter_normalizer_icu, 1);
--- a/src/lib-fts/test-fts-icu.c Mon May 18 06:46:32 2015 -0400 +++ b/src/lib-fts/test-fts-icu.c Mon May 18 06:51:24 2015 -0400 @@ -7,6 +7,8 @@ #include "test-common.h" #include "fts-icu.h" +#include <unicode/uclean.h> + static void test_fts_icu_utf8_to_utf16_ascii_resize(void) { buffer_t *dest = buffer_create_dynamic(pool_datastack_create(), 5); @@ -150,5 +152,7 @@ test_fts_icu_translate_resize, NULL }; - return test_run(test_functions); + int ret = test_run(test_functions); + u_cleanup(); + return ret; }