]> spindle.queued.net Git - midori/commitdiff
NULL check the key before rendering suggestions
authorAlexander Butenko <a.butenka@gmail.com>
Thu, 4 Feb 2010 01:40:59 +0000 (02:40 +0100)
committerChristian Dywan <christian@twotoasts.de>
Thu, 4 Feb 2010 01:44:30 +0000 (02:44 +0100)
midori/midori-locationaction.c

index 77ecb60f79d891e3f478f2e7062021bc76741a40..596e3f72dd6905ad3f4bb6ce4ec26141b0d80110 100644 (file)
@@ -997,6 +997,7 @@ midori_location_entry_render_text_cb (GtkCellLayout*   layout,
     gchar* desc_uri;
     gchar* desc_title;
     GtkWidget* entry;
+    const gchar* str;
     gchar* key;
     gchar* start;
     gchar* skey;
@@ -1009,26 +1010,27 @@ midori_location_entry_render_text_cb (GtkCellLayout*   layout,
     gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title, -1);
 
     desc = desc_uri = desc_title = key = NULL;
-    key = g_utf8_strdown (gtk_entry_get_text (GTK_ENTRY (entry)), -1);
-    len = 0;
+    str = gtk_entry_get_text (GTK_ENTRY (entry));
+    if (!str)
+        return;
+
+    key = g_utf8_strdown (str, -1);
+    len = strlen (key);
 
     if (G_LIKELY (uri))
     {
         temp = g_utf8_strdown (uri, -1);
         if ((start = strstr (temp, key)) && (start - temp))
         {
-            len = strlen (key);
             skey = g_strndup (uri + (start - temp), len);
             parts = g_strsplit (uri, skey, 2);
             if (parts[0] && parts[1])
                 desc_uri = g_markup_printf_escaped ("%s<b>%s</b>%s",
                     parts[0], skey, parts[1]);
-            else
-                desc_uri = g_markup_escape_text (uri, -1);
             g_strfreev (parts);
             g_free (skey);
         }
-        else
+        if (!desc_uri)
             desc_uri = g_markup_escape_text (uri, -1);
         g_free (temp);
     }
@@ -1038,19 +1040,15 @@ midori_location_entry_render_text_cb (GtkCellLayout*   layout,
         temp = g_utf8_strdown (title, -1);
         if ((start = strstr (temp, key)) && (start - temp))
         {
-            if (!len)
-                len = strlen (key);
             skey = g_strndup (title + (start - temp), len);
             parts = g_strsplit (title, skey, 2);
-            if (parts && parts[0] && parts[1])
+            if (parts[0] && parts[1])
                 desc_title = g_markup_printf_escaped ("%s<b>%s</b>%s",
                     parts[0], skey, parts[1]);
-            else
-                desc_title = g_markup_escape_text (title, -1);
             g_strfreev (parts);
             g_free (skey);
         }
-        else
+        if (!desc_title)
             desc_title = g_markup_escape_text (title, -1);
         g_free (temp);
     }