1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
From 5998aa90c08051cc520dfb64ede78783ef9cc2c4 Mon Sep 17 00:00:00 2001
From: Jens Granseuer <jensgr@gmx.net>
Date: Tue, 11 Aug 2009 16:01:55 +0000
Subject: Fix crash when iterating through the tree model
Don't use indices to move through iterators, don't skip the first
section, and verify that we got a new iterator before using it
(bug #591392).
---
diff --git a/capplets/keybindings/gnome-keybinding-properties.c b/capplets/keybindings/gnome-keybinding-properties.c
index fb3ba35..5383298 100644
--- a/capplets/keybindings/gnome-keybinding-properties.c
+++ b/capplets/keybindings/gnome-keybinding-properties.c
@@ -522,25 +522,20 @@ find_section (GtkTreeModel *model,
GtkTreeIter *iter,
const char *title)
{
- gint i, j;
- gboolean found;
+ gboolean success, found;
- i = gtk_tree_model_iter_n_children (model, NULL);
found = FALSE;
- gtk_tree_model_get_iter_first (model, iter);
- for (j = 0; j < i; j++)
+ success = gtk_tree_model_get_iter_first (model, iter);
+ while (success && !found)
{
char *description = NULL;
- gtk_tree_model_iter_next (model, iter);
gtk_tree_model_get (model, iter,
DESCRIPTION_COLUMN, &description,
-1);
- if (g_strcmp0 (description, title) == 0)
- {
- found = TRUE;
- break;
- }
+
+ found = (g_strcmp0 (description, title) == 0);
+ success = gtk_tree_model_iter_next (model, iter);
}
if (!found)
{
--
cgit v0.8.2
|