From c273d6c73aa2b048351813abefe6a2ff8d21e54e Mon Sep 17 00:00:00 2001 From: Alexander Butenko Date: Thu, 4 Feb 2010 02:40:59 +0100 Subject: [PATCH] NULL check the key before rendering suggestions --- midori/midori-locationaction.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/midori/midori-locationaction.c b/midori/midori-locationaction.c index 77ecb60f..596e3f72 100644 --- a/midori/midori-locationaction.c +++ b/midori/midori-locationaction.c @@ -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%s%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%s%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); }