e-d-s: Make sure we clear old attributes when setting im_addresses
authorAlexander Larsson <alexl@redhat.com>
Fri, 9 Sep 2011 08:25:37 +0000 (10:25 +0200)
committerAlexander Larsson <alexl@redhat.com>
Fri, 9 Sep 2011 08:25:37 +0000 (10:25 +0200)
The previous code called e_contact_get_attributes() which returns
a copy of the attributes, and tried to remove it with
e_vcard_remove_attribute () which matches on pointer values, so
it always failed.

backends/eds/lib/edsf-persona-store.vala

index 3698626..715ec24 100644 (file)
@@ -1527,14 +1527,7 @@ public class Edsf.PersonaStore : Folks.PersonaStore
       /* First let's remove everything */
       foreach (var field_id in im_eds_map.get_values ())
         {
-          /* Technically it's a (transfer full) list, but remove_attribute()
-           * swallows ownership. */
-          GLib.List<unowned VCardAttribute> attrs =
-              contact.get_attributes (field_id);
-          foreach (var attr in attrs)
-            {
-              contact.remove_attribute (attr);
-            }
+          contact.remove_attributes (null, E.Contact.vcard_attribute (field_id));
         }
 
      foreach (var proto in im_fds.get_keys ())