summaryrefslogtreecommitdiff
path: root/gio/gliststore.c
diff options
context:
space:
mode:
authorPhilip Withnall <withnall@endlessm.com>2019-01-18 15:22:19 +0000
committerPhilip Withnall <withnall@endlessm.com>2019-01-18 15:22:19 +0000
commitc9aba16af3f638a8ffb3707d5f4801bf4b7a00c5 (patch)
tree99e1207a8a514dbd6bd88dacea086b01caad7f0c /gio/gliststore.c
parent1a73410a96d46a414da8f9cce976961d2a9e82e3 (diff)
downloadglib-c9aba16af3f638a8ffb3707d5f4801bf4b7a00c5.tar.gz
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
Diffstat (limited to 'gio/gliststore.c')
-rw-r--r--gio/gliststore.c10
1 files 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;
}
/**