From: <svn...@op...> - 2009-10-13 18:51:42
|
Author: dgollub Date: Tue Oct 13 20:51:22 2009 New Revision: 5869 URL: http://www.opensync.org/changeset/5869 Log: Fix invalid comparsion results. Mixing up the OSyncChange pointers caused that the logical same entries got compared together. This was not obvious due to the cloning. This bug was introduced by r5747 Overwriting pointer change1 too early with clone_change1 caused that the clone_demerge function processed the logical change2, instead of change1. The twist of demerging with capabililtiies of member 1, the change of member 2 and vice-versa, is intended. Report and most of the debugging was done by henrik Modified: trunk/opensync/engine/opensync_obj_engine.c Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Sat Oct 10 18:28:03 2009 (r5868) +++ trunk/opensync/engine/opensync_obj_engine.c Tue Oct 13 20:51:22 2009 (r5869) @@ -315,7 +315,6 @@ if (!clone_change1) goto error; - change1 = clone_change1; } if (caps2) { @@ -323,9 +322,15 @@ if (!clone_change2) goto error; - change2 = mapping_change; } + + if (clone_change1) + change1 = clone_change1; + + if (clone_change2) + change2 = clone_change2; + tmp_result = osync_change_compare(change1, change2, error); if (caps1) |