[Evolution-hackers] libebook master: obsolete vCard used despite updated properties
- From: Patrick Ohly <patrick ohly gmx de>
- To: Evolution Hackers <evolution-hackers gnome org>
- Subject: [Evolution-hackers] libebook master: obsolete vCard used despite updated properties
- Date: Sat, 03 Mar 2012 13:26:42 +0100
Hello!
I tested SyncEvolution against current EDS master and found a problem:
setting a UID before committing an updated contact has no effect.
The sequence of events is this:
1. e_contact_new_from_vcard() where the vCard contains no UID.
2. e_contact_set(E_CONTACT_UID, <uid>) -> g_object_set()
3. e_book_commit_contact() -> e_vcard_to_string() -> D-Bus
In step 3, e_vcard_to_string() returns the cached evc->priv->vcard
without the UID although it has a UID in its attributes
(evc->priv->attributes).
I think the culprit is this commit here:
commit cca25e98a71d8c06f9ce1b53658ec4675f2dd5c2
Author: Bartosz Szatkowski <bulislaw linux com>
Date: Tue Oct 18 12:29:07 2011 +0200
Bug #656603 - Add support for generating vCard 2.1 in libebook
[...]
@@ -1016,17 +1246,16 @@ e_vcard_to_string (EVCard *evc,
{
g_return_val_if_fail (E_IS_VCARD (evc), NULL);
- /* If the vcard is not parsed yet, and if we don't have a UID in priv->attributes
- return priv->vcard directly */
- /* XXX: The format is ignored but it does not really matter
- * since only 3.0 is supported at the moment */
- if (evc->priv->vcard != NULL && evc->priv->attributes == NULL)
- return g_strdup (evc->priv->vcard);
-
switch (format) {
case EVC_FORMAT_VCARD_21:
+ if (evc->priv->vcard && strstr_nocase (evc->priv->vcard, CRLF "VERSION:2.1" CRLF))
+ return g_strdup (evc->priv->vcard);
+
return e_vcard_to_string_vcard_21 (evc);
case EVC_FORMAT_VCARD_30:
+ if (evc->priv->vcard && strstr_nocase (evc->priv->vcard, CRLF "VERSION:3.0" CRLF))
+ return g_strdup (evc->priv->vcard);
+
return e_vcard_to_string_vcard_30 (evc);
default:
g_warning ("invalid format specifier passed to e_vcard_to_string");
It removes the check for evc->priv->attributes. Adding that check back
fixes the problem.
Question: why does the removed comment only mention UID? Isn't any
contact modification detected by checking evc->priv->attributes?
--
Bye, Patrick Ohly
--
Patrick Ohly gmx de
http://www.estamos.de/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]