[glib: 1/2] gliststore: Store validity of last_position explicitly



commit c9aba16af3f638a8ffb3707d5f4801bf4b7a00c5
Author: Philip Withnall <withnall endlessm com>
Date:   Fri Jan 18 15:22:19 2019 +0000

    gliststore: Store validity of last_position explicitly
    
    Rather than storing it as an invalid value in last_position, store it as
    a separate boolean.
    
    This introduces no functional changes, but should fix some warnings from
    MSVC.
    
    Signed-off-by: Philip Withnall <withnall endlessm com>
    
    https://gitlab.gnome.org/GNOME/glib/issues/1500

 gio/gliststore.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/gio/gliststore.c b/gio/gliststore.c
index 8d87159d5..7b2a453d6 100644
--- a/gio/gliststore.c
+++ b/gio/gliststore.c
@@ -55,6 +55,7 @@ struct _GListStore
   /* cache */
   guint last_position;
   GSequenceIter *last_iter;
+  gboolean last_position_valid;
 };
 
 enum
@@ -79,7 +80,8 @@ g_list_store_items_changed (GListStore *store,
   if (position <= store->last_position)
     {
       store->last_iter = NULL;
-      store->last_position = -1u;
+      store->last_position = 0;
+      store->last_position_valid = FALSE;
     }
 
   g_list_model_items_changed (G_LIST_MODEL (store), position, removed, added);
@@ -179,7 +181,7 @@ g_list_store_get_item (GListModel *list,
   GListStore *store = G_LIST_STORE (list);
   GSequenceIter *it = NULL;
 
-  if (store->last_position != -1u)
+  if (store->last_position_valid)
     {
       if (position < G_MAXUINT && store->last_position == position + 1)
         it = g_sequence_iter_prev (store->last_iter);
@@ -194,6 +196,7 @@ g_list_store_get_item (GListModel *list,
 
   store->last_iter = it;
   store->last_position = position;
+  store->last_position_valid = TRUE;
 
   if (g_sequence_iter_is_end (it))
     return NULL;
@@ -213,7 +216,8 @@ static void
 g_list_store_init (GListStore *store)
 {
   store->items = g_sequence_new (g_object_unref);
-  store->last_position = -1u;
+  store->last_position = 0;
+  store->last_position_valid = FALSE;
 }
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]