diff options
author | Marco Pesenti Gritti <marco@gnome.org> | 2003-08-22 19:02:10 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2003-08-22 19:02:10 +0800 |
commit | 3e3d3961a8db405b5717cd0c02d67aa8abb8842b (patch) | |
tree | 0ba2fc9002d9227b7d33417a489addc9f6875dd5 /lib/widgets/ephy-node-view.c | |
parent | 17ebc02eeb18c2084823ef8555705087588719f3 (diff) | |
download | gsoc2013-epiphany-3e3d3961a8db405b5717cd0c02d67aa8abb8842b.tar.gz gsoc2013-epiphany-3e3d3961a8db405b5717cd0c02d67aa8abb8842b.tar.zst gsoc2013-epiphany-3e3d3961a8db405b5717cd0c02d67aa8abb8842b.zip |
Make it NULL safe
2003-08-22 Marco Pesenti Gritti <marco@gnome.org>
* lib/widgets/ephy-node-view.c: (compare_string_values),
(ephy_node_view_sort_func):
* src/bookmarks/ephy-bookmarks-menu.c: (sort_topics),
(sort_bookmarks):
* src/bookmarks/ephy-topic-action.c: (sort_bookmarks),
(sort_topics):
Make it NULL safe
* src/ephy-toolbars-model.c: (impl_get_item_id):
When creating bookmark, if the title is unknown, use untitled.
Diffstat (limited to 'lib/widgets/ephy-node-view.c')
-rw-r--r-- | lib/widgets/ephy-node-view.c | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/lib/widgets/ephy-node-view.c b/lib/widgets/ephy-node-view.c index 3baac583a..5bd528fcc 100644 --- a/lib/widgets/ephy-node-view.c +++ b/lib/widgets/ephy-node-view.c @@ -1041,6 +1041,38 @@ cell_renderer_edited (GtkCellRendererText *cell, } static int +compare_string_values (const GValue *a_value, const GValue *b_value) +{ + const char *str1, *str2; + int retval; + + str1 = g_value_get_string (a_value); + str2 = g_value_get_string (b_value); + + if (str1 == NULL) + { + retval = -1; + } + else if (str2 == NULL) + { + retval = 1; + } + else + { + char *str_a; + char *str_b; + + str_a = g_utf8_casefold (str1, -1); + str_b = g_utf8_casefold (str2, -1); + retval = g_utf8_collate (str_a, str_b); + g_free (str_a); + g_free (str_b); + } + + return retval; +} + +static int ephy_node_view_sort_func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, @@ -1061,20 +1093,14 @@ ephy_node_view_sort_func (GtkTreeModel *model, GType type = gtk_tree_model_get_column_type (model, column); GValue a_value = {0, }; GValue b_value = {0, }; - gchar *stra, *strb; + gtk_tree_model_get_value (model, a, column, &a_value); gtk_tree_model_get_value (model, b, column, &b_value); switch (G_TYPE_FUNDAMENTAL (type)) { case G_TYPE_STRING: - /* FIXME: this is horribly inefficient */ - stra = g_utf8_casefold (g_value_get_string (&a_value), -1); - strb = g_utf8_casefold (g_value_get_string (&b_value), -1); - g_return_val_if_fail (stra != NULL && strb != NULL, 0); - retval = g_utf8_collate (stra, strb); - g_free (stra); - g_free (strb); + retval = compare_string_values (&a_value, &b_value); break; case G_TYPE_INT: if (g_value_get_int (&a_value) < g_value_get_int (&b_value)) |