]> spindle.queued.net Git - midori/commitdiff
Don't leak form suggestions and don't return from the loop
authorChristian Dywan <christian@twotoasts.de>
Wed, 7 Oct 2009 21:04:30 +0000 (23:04 +0200)
committerChristian Dywan <christian@twotoasts.de>
Wed, 7 Oct 2009 21:04:30 +0000 (23:04 +0200)
extensions/formhistory.c

index 5b6de32636765b21407fab9e9dda3a7a8586bcb0..67d170a88cd3bf71bda986a32df775fc2e99e5e8 100644 (file)
@@ -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)