From 0706bdbbe76273fff6cc5efa9d7800297369ce5e Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Wed, 7 Oct 2009 23:04:30 +0200 Subject: [PATCH] Don't leak form suggestions and don't return from the loop --- extensions/formhistory.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/extensions/formhistory.c b/extensions/formhistory.c index 5b6de326..67d170a8 100644 --- a/extensions/formhistory.c +++ b/extensions/formhistory.c @@ -75,20 +75,26 @@ formhistory_prepare_js () static gchar* formhistory_build_js () { - const gchar* suggestions = ""; + gchar* suggestions = g_strdup (""); GHashTableIter iter; gpointer key, value; + gchar* script; + g_hash_table_iter_init (&iter, global_keys); while (g_hash_table_iter_next (&iter, &key, &value)) - suggestions = g_strdup_printf ("%s arr[\"%s\"] = [%s]; ", - suggestions, (char*)key, (char*)value); - gchar* script = g_strdup_printf ("function FormSuggestions(eid) { " - "arr = new Array();" - "%s" - "this.suggestions = arr[eid]; }" - "%s", - suggestions, - jsforms); + { + gchar* _suggestions = g_strdup_printf ("%s arr[\"%s\"] = [%s]; ", + suggestions, (char*)key, (char*)value); + katze_assign (suggestions, _suggestions); + } + script = g_strdup_printf ("function FormSuggestions(eid) { " + "arr = new Array();" + "%s" + "this.suggestions = arr[eid]; }" + "%s", + suggestions, + jsforms); + g_free (suggestions); return script; } @@ -104,7 +110,7 @@ formhistory_update_main_hash (GHashTable* keys) while (g_hash_table_iter_next (&iter, (gpointer)&key, (gpointer)&value)) { if (value && *value && (strlen (value) > MAXCHARS || strlen (value) < MINCHARS)) - return; + continue; tmp = g_hash_table_lookup (global_keys, (gpointer)key); if (tmp)