Merge pull request #62 from Zentyal/ejhernandez/fix-space-temporal-crash-setChangeKey

Attempt to sync an UID in setChangeKey to avoid crashing
This commit is contained in:
Jesús García Sáez 2014-12-01 19:45:51 +01:00
commit bdf12e5c01

View file

@ -757,7 +757,6 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
messageEntry = [messages objectForKey: messageUID]; messageEntry = [messages objectForKey: messageUID];
if (!messageEntry) if (!messageEntry)
{ {
[messages removeObjectForKey: messageUID];
changeNumber = [[self context] getNewChangeNumber]; changeNumber = [[self context] getNewChangeNumber];
fetchResults = [(NSDictionary *) [sogoObject fetchUIDs: [NSArray arrayWithObject: messageUID] fetchResults = [(NSDictionary *) [sogoObject fetchUIDs: [NSArray arrayWithObject: messageUID]
parts: [NSArray arrayWithObject: @"modseq"]] parts: [NSArray arrayWithObject: @"modseq"]]
@ -844,12 +843,24 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
{ {
NSMutableDictionary *messages, *messageEntry; NSMutableDictionary *messages, *messageEntry;
NSString *messageUid; NSString *messageUid;
BOOL synced;
messageUid = [self messageUIDFromMessageKey: messageKey]; messageUid = [self messageUIDFromMessageKey: messageKey];
messages = [[versionsMessage properties] objectForKey: @"Messages"]; messages = [[versionsMessage properties] objectForKey: @"Messages"];
messageEntry = [messages objectForKey: messageUid]; messageEntry = [messages objectForKey: messageUid];
if (!messageEntry) if (!messageEntry)
abort (); {
[self warnWithFormat: @"attempting to synchronise to set the change key for "
@"this message %@", messageKey];
synced = [self synchroniseCacheForUID: messageUid];
if (synced)
messageEntry = [[[versionsMessage properties] objectForKey: @"Messages"] objectForKey: messageUid];
if (!messageEntry)
{
[self errorWithFormat: @"still nothing. We crash!"];
abort ();
}
}
[self _setChangeKey: changeKey forMessageEntry: messageEntry]; [self _setChangeKey: changeKey forMessageEntry: messageEntry];
[versionsMessage save]; [versionsMessage save];