From 8f4cba86a56cd69d95b07dda7e002f33cbe6ba62 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Sun, 19 Apr 2015 02:45:29 -0300 Subject: trie: fixed memory leak when replacing existing key --- src/utils/trie.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/utils/trie.c b/src/utils/trie.c index f1b77eb..e0ac1af 100644 --- a/src/utils/trie.c +++ b/src/utils/trie.c @@ -82,8 +82,9 @@ b_trie_insert(b_trie_t *trie, const char *key, void *data) parent = tmp; - if (previous == NULL || parent != NULL) + if (previous == NULL || parent != NULL) { goto clean; + } current = b_malloc(sizeof(b_trie_node_t)); current->key = *key; @@ -95,6 +96,8 @@ b_trie_insert(b_trie_t *trie, const char *key, void *data) clean: if (*key == '\0') { + if (parent->data != NULL && trie->free_func != NULL) + trie->free_func(parent->data); parent->data = data; break; } -- cgit v1.2.3-18-g5258