]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Fix variables replacement in mempool
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 10 Mar 2020 15:48:56 +0000 (15:48 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 10 Mar 2020 15:48:56 +0000 (15:48 +0000)
src/libutil/mem_pool.c

index 357e8b693a87603fafbaaf162ae95679779c5585..b92579e3677ea5631395766adddcd69af43665af 100644 (file)
@@ -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;