GtkQTreeModel: check that iter is valid

Add check to iter_is_valid() function to make sure that the given
GtkTreeIter is part of the correct model. Make sure that all
functions which are part of the GtkTreeModel interface peform this
check in order to prevent crashes.

Reviewed-by: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
Change-Id: I71c1d1bc972856dae269f702439212c892db6115
diff --git a/src/models/gtkqtreemodel.cpp b/src/models/gtkqtreemodel.cpp
index 5ba3a7e..6d823c7 100644
--- a/src/models/gtkqtreemodel.cpp
+++ b/src/models/gtkqtreemodel.cpp
@@ -657,11 +657,13 @@
 iter_is_valid(GtkTreeIter *iter,
               GtkQTreeModel   *q_tree_model)
 {
-    gboolean retval;
+    auto priv = GTK_Q_TREEMODEL_GET_PRIVATE(q_tree_model);
+
     g_return_val_if_fail(iter != NULL, FALSE);
+    g_return_val_if_fail(iter->stamp == priv->stamp, FALSE);
+
     QIter *qiter = Q_ITER(iter);
-    retval = q_tree_model->priv->model->indexFromId(qiter->row.value, qiter->column.value, qiter->id).isValid();
-    return retval;
+    return q_tree_model->priv->model->indexFromId(qiter->row.value, qiter->column.value, qiter->id).isValid();
 }
 
 static void
@@ -775,7 +777,6 @@
     GtkQTreeModelPrivate *priv = q_tree_model->priv;
     GtkTreePath *path;
 
-    g_return_val_if_fail (iter->stamp == priv->stamp, NULL);
     g_return_val_if_fail (iter_is_valid(iter, q_tree_model), NULL);
 
     /* To get the path, we have to traverse from the child all the way up */