diff options
author | Philip Withnall <withnall@endlessm.com> | 2019-01-18 15:22:19 +0000 |
---|---|---|
committer | Philip Withnall <withnall@endlessm.com> | 2019-01-18 15:22:19 +0000 |
commit | c9aba16af3f638a8ffb3707d5f4801bf4b7a00c5 (patch) | |
tree | 99e1207a8a514dbd6bd88dacea086b01caad7f0c /gio/gliststore.c | |
parent | 1a73410a96d46a414da8f9cce976961d2a9e82e3 (diff) | |
download | glib-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.c | 10 |
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; } /** |