From 4804337a0145afa9c3e43ccc6e7a6e69e4564799 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 7 Dec 2012 13:30:50 -0500 Subject: [PATCH] Now pass the memory context when copying/moving folders. --- OpenChange/MAPIStoreDBFolder.m | 4 +++- OpenChange/MAPIStoreFolder.h | 3 ++- OpenChange/MAPIStoreFolder.m | 12 ++++++++---- OpenChange/MAPIStoreMailFolder.m | 7 +++++-- OpenChange/MAPIStoreSOGo.m | 12 ++++++++---- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/OpenChange/MAPIStoreDBFolder.m b/OpenChange/MAPIStoreDBFolder.m index e7d90f5a7..d96b81faf 100644 --- a/OpenChange/MAPIStoreDBFolder.m +++ b/OpenChange/MAPIStoreDBFolder.m @@ -130,6 +130,7 @@ static NSString *MAPIStoreRightFolderContact = @"RightsFolderContact"; withNewName: (NSString *) newFolderName isMove: (BOOL) isMove isRecursive: (BOOL) isRecursive + inMemCtx: (TALLOC_CTX *) memCtx { enum mapistore_error rc; NSString *path, *pathComponent, *targetPath, *newPath; @@ -164,7 +165,8 @@ static NSString *MAPIStoreRightFolderContact = @"RightsFolderContact"; else rc = [super moveCopyToFolder: targetFolder withNewName: newFolderName isMove: isMove - isRecursive: isRecursive]; + isRecursive: isRecursive + inMemCtx: memCtx]; return rc; } diff --git a/OpenChange/MAPIStoreFolder.h b/OpenChange/MAPIStoreFolder.h index 7b769ac5f..860e19636 100644 --- a/OpenChange/MAPIStoreFolder.h +++ b/OpenChange/MAPIStoreFolder.h @@ -129,7 +129,8 @@ - (enum mapistore_error) moveCopyToFolder: (MAPIStoreFolder *) targetFolder withNewName: (NSString *) newFolderName isMove: (BOOL) isMove - isRecursive: (BOOL) isRecursive; + isRecursive: (BOOL) isRecursive + inMemCtx: (TALLOC_CTX *) memCtx; - (int) getDeletedFMIDs: (struct UI8Array_r **) fmidsPtr andCN: (uint64_t *) cnPtr diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 64a388fcb..ebb011013 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -786,6 +786,8 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe withNewName: (NSString *) newFolderName isMove: (BOOL) isMove isRecursive: (BOOL) isRecursive + inMemCtx: (TALLOC_CTX *) memCtx + { enum mapistore_error rc; NSAutoreleasePool *pool; @@ -798,9 +800,9 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe NSUInteger count, max; NSString *childKey; uint64_t fmid; - TALLOC_CTX *memCtx; + //TALLOC_CTX *memCtx; - memCtx = talloc_zero (NULL, TALLOC_CTX); + //memCtx = talloc_zero (NULL, TALLOC_CTX); /* TODO: one possible issue with this algorithm is that moved messages will lack a version number and will all be assigned a new one, even though @@ -878,7 +880,9 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe subFolder = [self lookupFolder: childKey]; [subFolder moveCopyToFolder: newFolder withNewName: nil isMove: isMove - isRecursive: isRecursive]; + isRecursive: isRecursive + inMemCtx: memCtx]; + } [pool release]; } @@ -898,7 +902,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe else rc = MAPISTORE_ERR_DENIED; - talloc_free (memCtx); + //talloc_free (memCtx); return rc; } diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index 3a2d2bb2f..a2a572938 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -1055,6 +1055,7 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) withNewName: (NSString *) newFolderName isMove: (BOOL) isMove isRecursive: (BOOL) isRecursive + inMemCtx: (TALLOC_CTX *) memCtx { enum mapistore_error rc; NSURL *folderURL, *newFolderURL; @@ -1150,7 +1151,8 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) moveCopyToFolder: newFolder withNewName: nil isMove: NO - isRecursive: YES]; + isRecursive: YES + inMemCtx: memCtx]; } } } @@ -1163,7 +1165,8 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) else rc = [super moveCopyToFolder: targetFolder withNewName: newFolderName isMove: isMove - isRecursive: isRecursive]; + isRecursive: isRecursive + inMemCtx: memCtx]; return rc; } diff --git a/OpenChange/MAPIStoreSOGo.m b/OpenChange/MAPIStoreSOGo.m index c88622e04..c9e24b715 100644 --- a/OpenChange/MAPIStoreSOGo.m +++ b/OpenChange/MAPIStoreSOGo.m @@ -611,7 +611,7 @@ sogo_folder_move_copy_messages(void *folder_object, static enum mapistore_error sogo_folder_move_folder(void *folder_object, void *target_folder_object, - const char *new_folder_name) + TALLOC_CTX *mem_ctx, const char *new_folder_name) { NSAutoreleasePool *pool; MAPIStoreFolder *moveFolder, *targetFolder; @@ -643,7 +643,9 @@ sogo_folder_move_folder(void *folder_object, void *target_folder_object, rc = [moveFolder moveCopyToFolder: targetFolder withNewName: newFolderName isMove: YES - isRecursive: YES]; + isRecursive: YES + inMemCtx: mem_ctx]; + [pool release]; GSUnregisterCurrentThread (); } @@ -656,7 +658,7 @@ sogo_folder_move_folder(void *folder_object, void *target_folder_object, } static enum mapistore_error -sogo_folder_copy_folder(void *folder_object, void *target_folder_object, +sogo_folder_copy_folder(void *folder_object, void *target_folder_object, TALLOC_CTX *mem_ctx, bool recursive, const char *new_folder_name) { NSAutoreleasePool *pool; @@ -683,7 +685,9 @@ sogo_folder_copy_folder(void *folder_object, void *target_folder_object, rc = [copyFolder moveCopyToFolder: targetFolder withNewName: newFolderName isMove: NO - isRecursive: recursive]; + isRecursive: recursive + inMemCtx: mem_ctx]; + [pool release]; GSUnregisterCurrentThread (); }