[Telepathy-commits] [telepathy-gabble/master] vcard-manager: cache_entry_complete_requests: copy the pending_requests list and iterate on it

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Tue Aug 19 10:54:13 PDT 2008


20080731104032-7fe3f-ee3f7a869a6500421f770013cbd2c76303ec759a.gz
---
 src/vcard-manager.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/vcard-manager.c b/src/vcard-manager.c
index 75d2770..76d40be 100644
--- a/src/vcard-manager.c
+++ b/src/vcard-manager.c
@@ -451,18 +451,18 @@ static void complete_one_request (GabbleVCardManagerRequest *request,
 static void
 cache_entry_complete_requests (GabbleVCardCacheEntry *entry, GError *error)
 {
-  GSList *cur;
+  GSList *cur, *tmp;
 
-  cur = entry->pending_requests;
-  while (cur != NULL)
+  tmp = g_slist_copy (entry->pending_requests);
+
+  for (cur = tmp; cur != NULL; cur = cur->next)
     {
       GabbleVCardManagerRequest *request = cur->data;
 
-      /* advance cur before we complete the request, as it can free the entry */
-      cur = g_slist_next (cur);
-
       complete_one_request (request, error ? NULL : entry->vcard_node, error);
     }
+
+  g_slist_free (tmp);
 }
 
 static void
-- 
1.5.6.3




More information about the Telepathy-commits mailing list