summaryrefslogtreecommitdiff
blob: a246e929985a46704fedab36016c56c415804df0 (plain)
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