From c40d8788f2c7222fbc4a54afebb9ec164ef1aca6 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 29 Jul 2011 20:58:04 +0000 Subject: [PATCH] Monotone-Parent: c40c5c6ccb865a2765307f1e9a53f079e5486bb4 Monotone-Revision: e5c4217c6e36b401e5a327f56f52df4391fc0526 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-07-29T20:58:04 Monotone-Branch: ca.inverse.sogo --- OpenChange/MAPIStoreGCSMessage.m | 2 +- OpenChange/MAPIStoreObject.m | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/OpenChange/MAPIStoreGCSMessage.m b/OpenChange/MAPIStoreGCSMessage.m index e6e5216b5..5f697727f 100644 --- a/OpenChange/MAPIStoreGCSMessage.m +++ b/OpenChange/MAPIStoreGCSMessage.m @@ -52,7 +52,7 @@ changeNumberForMessageWithKey: [self nameInContainer]]; if (changeNumber) version = [changeNumber unsignedLongLongValue] >> 16; - else + else if (![sogoObject isNew]) abort (); return version; diff --git a/OpenChange/MAPIStoreObject.m b/OpenChange/MAPIStoreObject.m index 90e0dd6fa..4c33db6d2 100644 --- a/OpenChange/MAPIStoreObject.m +++ b/OpenChange/MAPIStoreObject.m @@ -362,16 +362,36 @@ static Class NSExceptionK, MAPIStoreFolderK; - (int) getPrChangeKey: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self getReplicaKey: data fromGlobCnt: [self objectVersion] + int rc; + uint64_t obVersion; + + obVersion = [self objectVersion]; + if (obVersion = 0xffffffffffffffffLL) + rc = MAPISTORE_ERR_NOT_FOUND; + else + rc = [self getReplicaKey: data fromGlobCnt: obVersion inMemCtx: memCtx]; + + return rc; } - (int) getPrChangeNum: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - *data = MAPILongLongValue (memCtx, ([self objectVersion] << 16) | 0x0001); + int rc; + uint64_t obVersion; - return MAPISTORE_SUCCESS; + obVersion = [self objectVersion]; + if (obVersion = 0xffffffffffffffffLL) + rc = MAPISTORE_ERR_NOT_FOUND; + else + { + *data = MAPILongLongValue (memCtx, ((obVersion << 16) + | 0x0001)); + rc = MAPISTORE_SUCCESS; + } + + return rc; } - (int) getPrCreationTime: (void **) data