summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <philip@tecnocode.co.uk>2014-02-16 22:50:56 +0000
committerPhilip Withnall <philip@tecnocode.co.uk>2014-02-16 23:52:32 +0000
commita92acd8a9ff837df5636fa9f7e9cf09d6c2d3e15 (patch)
tree113edf3c9758b943bf5cd713e777c0f528196e6d
parentbdd4d235def0c2662e125aaa4ed4b77d2dad14e6 (diff)
eds: Fix incorrect removal of elements of a read-only libgee collection
The .remove() calls would hit an assert_not_reached() in libgee. Remove from the MapIterator instead.
-rw-r--r--backends/eds/eds-backend.vala14
1 files changed, 7 insertions, 7 deletions
diff --git a/backends/eds/eds-backend.vala b/backends/eds/eds-backend.vala
index 90855f2d..7bdb1a57 100644
--- a/backends/eds/eds-backend.vala
+++ b/backends/eds/eds-backend.vala
@@ -133,11 +133,11 @@ public class Folks.Backends.Eds.Backend : Folks.Backend
}
}
- var iter = this._persona_stores.values.iterator ();
+ var iter = this._persona_stores.map_iterator ();
while (iter.next ())
{
- var store = iter.get ();
+ var store = iter.get_value ();
if (!storeids.contains (store.id))
{
@@ -249,10 +249,10 @@ public class Folks.Backends.Eds.Backend : Folks.Backend
this._prepare_pending = true;
this.freeze_notify ();
- var iter = this._persona_stores.values.iterator ();
+ var iter = this._persona_stores.map_iterator ();
while (iter.next ())
- this._remove_address_book (iter.get (), true, iter);
+ this._remove_address_book (iter.get_value (), true, iter);
this._ab_sources.source_added.disconnect (this._ab_source_list_changed_cb);
this._ab_sources.source_enabled.disconnect (this._ab_source_list_changed_cb);
@@ -345,14 +345,14 @@ public class Folks.Backends.Eds.Backend : Folks.Backend
private void _remove_address_book (Folks.PersonaStore store,
bool notify = true,
- Iterator<Folks.PersonaStore>? iter = null)
+ MapIterator<string, Folks.PersonaStore>? iter = null)
{
debug ("Removing address book '%s'.", store.id);
if (iter != null)
{
- assert (store == iter.get ());
- iter.remove ();
+ assert (store == iter.get_value ());
+ iter.unset ();
}
else
{