summaryrefslogtreecommitdiffstats
path: root/src/libutil
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2020-03-10 15:48:56 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2020-03-10 15:48:56 +0000
commit1ffd4fe64e1e3c9d4ae7cf942c7179a8715e4a63 (patch)
treef1837cf122197a9852879d79dbad09842f4a0017 /src/libutil
parent2f2ae75464d9327951c0bd4987bcfe05367de23d (diff)
downloadrspamd-1ffd4fe64e1e3c9d4ae7cf942c7179a8715e4a63.tar.gz
rspamd-1ffd4fe64e1e3c9d4ae7cf942c7179a8715e4a63.zip
[Fix] Fix variables replacement in mempool
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/mem_pool.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libutil/mem_pool.c b/src/libutil/mem_pool.c
index 357e8b693..b92579e36 100644
--- a/src/libutil/mem_pool.c
+++ b/src/libutil/mem_pool.c
@@ -1186,6 +1186,15 @@ rspamd_mempool_set_variable (rspamd_mempool_t *pool,
else {
struct rspamd_mempool_variable *pvar;
+ if (r == 0) {
+ /* Existing entry, maybe need cleanup */
+ pvar = &kh_val (pool->priv->variables, it);
+
+ if (pvar->dtor) {
+ pvar->dtor (pvar->data);
+ }
+ }
+
pvar = &kh_val (pool->priv->variables, it);
pvar->data = value;
pvar->dtor = destructor;