From 1ee0ba068a0619384cce2f2164d6815f00b185bc Mon Sep 17 00:00:00 2001 From: Jussi Kukkonen Date: Fri, 5 Jul 2013 14:45:32 +0300 Subject: [GenericModel] Set path to "0" if iterator is not set It's not clear why get_path() is called with a tree_iter that is not yet defined -- in other words there may be some application logic bug hidden here -- but this should make the call safe: Return the "0" path when iterator is not initialized (tree_iter.user_data is null or 0, depending on gobject-introspection version). Fixes #38, I believe. I cannot reproduce the problem as is but I can manually create problematic tree_iters: those are now fine with the new code. Signed-off-by: Jussi Kukkonen --- src/msd/msd_generic_model.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/msd/msd_generic_model.py b/src/msd/msd_generic_model.py index c9181a9..6551ab9 100644 --- a/src/msd/msd_generic_model.py +++ b/src/msd/msd_generic_model.py @@ -130,8 +130,10 @@ class GenericModel(GObject.GObject, Gtk.TreeModel): # https://bugzilla.gnome.org/show_bug.cgi?id=698366 @staticmethod def __get_row_index (tree_iter): - if (tree_iter.user_data == None): - return None + # Handle the error case of user_data being not set + # (0 or None depending on gobject-introspection version) + if (tree_iter.user_data <= 0): + return 0 return tree_iter.user_data - 1 @staticmethod @@ -294,8 +296,6 @@ class GenericModel(GObject.GObject, Gtk.TreeModel): return (False, None) def do_get_path(self, tree_iter): - if tree_iter.user_data is None: - return Gtk.TreePath((None,)) return Gtk.TreePath((self.__get_row_index(tree_iter),)) def do_get_value(self, tree_iter, col): -- cgit v1.2.1