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;