sön 2004-11-28 klockan 21:16 +0100 skrev Fabian Sturm:
> Hi!
> 
[snip]

> > The call to evo2_calendar_modify is similar and I suspect that deleting
> > a calendar entry in the phone will also cause multisync to crash. I have
> > not tested this yet.
> 
> I guess the problem is also when an address book entry is deleted.
> Multisync crashed in this case on my computer. I never debugged it and
> fixed it by not allowing any changes to propagate from the phone to
> evolution. It didn't work anyways because it created broken entries for
> all the names containing special characters.
> 
Yes, the problem also occur when removing a calendar entry. I have a
quick fix attached in this mail. It can be applied with:

In the top dir of multisync

$ patch -p0 < evolution_sync.c.patch

You could test with --dry-run first if you'd like.

As I said, it is just a quick fix (by passing a pointer to uidretlen),
but I guess it should be asserted in the called function which is not
added by this patch.

> e.g. Müller was created correctly on the phone but on a second
> synchronization I got a M entry in evolution (stopping at the first
> umlaut).

/Jonas
-- 
Jonas Birmé ([EMAIL PROTECTED])        Jabber: [EMAIL PROTECTED]
http://home.birme.se/~birme/           IRC: [EMAIL PROTECTED]
    |
    +-----< Abandon the search for Truth; settle for a good fantasy >--
--- plugins/evolution2_sync/src/evolution_sync.c	2004-10-27 22:14:04.000000000 +0200
+++ ../multisync-birme/plugins/evolution2_sync/src/evolution_sync.c	2004-11-28 16:20:30.000000000 +0100
@@ -317,25 +317,26 @@
 
 void syncobj_delete(evo_environment *env, char *uid, sync_object_type objtype, int softdelete)
 {
+	int uidretlen;
 	evo_debug(env, 2, "start: delete");
 	
 	switch (objtype) {
 		case SYNC_OBJECT_TYPE_PHONEBOOK:
-			if (!evo2_addrbook_modify(env, NULL, uid, NULL, NULL)) {
+			if (!evo2_addrbook_modify(env, NULL, uid, NULL, &uidretlen)) {
 				sync_set_pair_status(env->handle, "Unable to delete addressbook entry");
 				sync_set_requestfailed(env->handle);
 				return;
 			}
 			break;
 		case SYNC_OBJECT_TYPE_CALENDAR:
-			if (!evo2_calendar_modify(env, NULL, uid, NULL, NULL)) {
+			if (!evo2_calendar_modify(env, NULL, uid, NULL, &uidretlen)) {
 				sync_set_pair_status(env->handle, "Unable to delete calendar entry");
 				sync_set_requestfailed(env->handle);
 				return;
 			}
 			break;
 		case SYNC_OBJECT_TYPE_TODO:
-			if (!evo2_tasks_modify(env, NULL, uid, NULL, NULL)) {
+			if (!evo2_tasks_modify(env, NULL, uid, NULL, &uidretlen)) {
 				sync_set_pair_status(env->handle, "Unable to delete task");
 				sync_set_requestfailed(env->handle);
 				return;

Reply via email to