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;