From e6edfc2cfd33b4f4309e5ae87f6e38de7e62f4f6 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Fri, 23 Jul 2010 12:21:22 +0100 Subject: [PATCH] Manually iterate through personas in remove_individual(). This lets us properly yield upon remove_persona(). --- folks/individual-aggregator.vala | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/folks/individual-aggregator.vala b/folks/individual-aggregator.vala index 8557de7..a2641a0 100644 --- a/folks/individual-aggregator.vala +++ b/folks/individual-aggregator.vala @@ -319,8 +319,14 @@ public class Folks.IndividualAggregator : Object */ public async void remove_individual (Individual individual) throws GLib.Error { - foreach (unowned Persona persona in individual.personas) - yield persona.store.remove_persona (persona); + /* We have to iterate manually since using foreach() requires a sync + * lambda function, meaning we can't yield on the remove_persona() call */ + unowned GLib.List i; + for (i = individual.personas; i != null; i = i.next) + { + unowned Persona persona = (Persona) i.data; + yield persona.store.remove_persona (persona); + } } /** -- 2.7.4