diff --git a/ChangeLog b/ChangeLog index 7ea975e60..e48fa0fdb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-08-15 Wolfgang Sourdeau + * OpenChange/MAPIStoreMailMessage.m (-objectVersion): updated code + as in MAPIStoreGCSMessage's version. + * OpenChange/MAPIStoreMailFolder.m (-messageTable): we no longer cache the table object as we don't want to assign different handles to the same memory object, causing inconsistencies with diff --git a/OpenChange/MAPIStoreMailMessage.m b/OpenChange/MAPIStoreMailMessage.m index 1e8b27ba0..8fab6ba51 100644 --- a/OpenChange/MAPIStoreMailMessage.m +++ b/OpenChange/MAPIStoreMailMessage.m @@ -275,12 +275,24 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) container messageUIDFromMessageKey: [self nameInContainer]]; if (uid) { - changeNumber = [(MAPIStoreMailFolder *) - container changeNumberForMessageUID: uid]; - if (changeNumber) - version = [changeNumber unsignedLongLongValue] >> 16; - else - abort (); + changeNumber = [(MAPIStoreMailFolder *) container + changeNumberForMessageUID: uid]; + if (!changeNumber) + { + [self warnWithFormat: @"attempting to get change number" + @" by synchronising folder..."]; + [(MAPIStoreMailFolder *) container synchroniseCache]; + changeNumber = [(MAPIStoreMailFolder *) container + changeNumberForMessageUID: uid]; + if (changeNumber) + [self logWithFormat: @"got one"]; + else + { + [self errorWithFormat: @"still nothing. We crash!"]; + abort (); + } + } + version = [changeNumber unsignedLongLongValue] >> 16; } else abort ();