SF.net SVN: geany:[3915] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sat Jul 4 09:22:49 UTC 2009


Revision: 3915
          http://geany.svn.sourceforge.net/geany/?rev=3915&view=rev
Author:   eht16
Date:     2009-07-04 09:22:49 +0000 (Sat, 04 Jul 2009)

Log Message:
-----------
Fix warnings and possible crashes in the toolbar editor when the list of displayed toolbar items is empty.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/toolbar.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-07-04 09:22:24 UTC (rev 3914)
+++ trunk/ChangeLog	2009-07-04 09:22:49 UTC (rev 3915)
@@ -18,6 +18,8 @@
    control the new Scintilla indentation mode for wrapped lines.
  * src/toolbar.c:
    Properly close the toolbar editor on delete-events.
+   Fix warnings and possible crashes in the toolbar editor when the list
+   of displayed toolbar items is empty.
 
 
 2009-06-30  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/src/toolbar.c
===================================================================
--- trunk/src/toolbar.c	2009-07-04 09:22:24 UTC (rev 3914)
+++ trunk/src/toolbar.c	2009-07-04 09:22:49 UTC (rev 3915)
@@ -690,6 +690,9 @@
 		return;
 
 	gtk_tree_model_get(model, &iter, 0, &name, -1);
+	if (! NZV(name))
+		return;
+
 	atom = gdk_atom_intern(tb_editor_dnd_targets[0].target, FALSE);
 	gtk_selection_data_set(data, atom, 8, (guchar*) name, strlen(name));
 
@@ -722,18 +725,23 @@
 
 		if (tree != tbw->tree_available || ! is_sep)
 		{
-			GtkTreeIter iter, iter_before;
+			GtkTreeIter iter, iter_before, *iter_before_ptr;
 			GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model(tree));
 
 			if (tbw->last_drag_path != NULL)
 			{
 				gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter_before, tbw->last_drag_path);
 
+				if (gtk_list_store_iter_is_valid(store, &iter_before))
+					iter_before_ptr = &iter_before;
+				else
+					iter_before_ptr = NULL;
+
 				if (tbw->last_drag_pos == GTK_TREE_VIEW_DROP_BEFORE ||
 					tbw->last_drag_pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE)
-					gtk_list_store_insert_before(store, &iter, &iter_before);
+					gtk_list_store_insert_before(store, &iter, iter_before_ptr);
 				else
-					gtk_list_store_insert_after(store, &iter, &iter_before);
+					gtk_list_store_insert_after(store, &iter, iter_before_ptr);
 
 				gtk_list_store_set(store, &iter, 0, text, -1);
 			}
@@ -879,7 +887,7 @@
 
 	if (utils_str_equal(action_name, TB_EDITOR_SEPARATOR))
 		g_string_append_printf(data, "\t\t<separator/>\n");
-	else
+	else if (NZV(action_name))
 		g_string_append_printf(data, "\t\t<toolitem action='%s' />\n", action_name);
 
 	g_free(action_name);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list