summaryrefslogtreecommitdiff
path: root/src/trie.c
diff options
context:
space:
mode:
authorGuilherme de S. Pastore <gpastore@src.gnome.org>2006-01-30 12:23:49 +0000
committerGuilherme de S. Pastore <gpastore@src.gnome.org>2006-01-30 12:23:49 +0000
commit14310a352215434f45d24584bc34156ee922d639 (patch)
treee7f07855bb8a2ef768adab0e99a23950e78668ba /src/trie.c
parent154c33179ee3d9de0bdf3416dabea3cdead0ebdc (diff)
applied patch from Tomas Mraz to fix a double free. Closes bug #161337.
* src/trie.c: applied patch from Tomas Mraz to fix a double free. Closes bug #161337.
Diffstat (limited to 'src/trie.c')
-rw-r--r--src/trie.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/trie.c b/src/trie.c
index 3a92f19..3981fc1 100644
--- a/src/trie.c
+++ b/src/trie.c
@@ -648,9 +648,12 @@ _vte_trie_matchx(struct _vte_trie *trie, const gunichar *pattern, size_t length,
/* We're done searching. Copy out any parameters we picked up. */
if (bestarray != NULL) {
for (i = 0; i < bestarray->n_values; i++) {
- g_value_array_append(array,
- g_value_array_get_nth(bestarray,
- i));
+ GValue *value = g_value_array_get_nth(bestarray, i);
+ g_value_array_append(array, value);
+
+ if (G_VALUE_HOLDS_POINTER(value)) {
+ g_value_set_pointer(value, NULL);
+ }
}
_vte_matcher_free_params_array(bestarray);
}
@@ -704,6 +707,7 @@ _vte_trie_match(struct _vte_trie *trie, const gunichar *pattern, size_t length,
if (ptr != NULL) {
g_free(ptr);
}
+ g_value_set_pointer(value, NULL);
}
}
_vte_matcher_free_params_array(valuearray);