aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar CodaFi <devteam.codafi@gmail.com>2013-09-12 19:24:56 -0600
committerGravatar CodaFi <devteam.codafi@gmail.com>2013-09-12 19:24:56 -0600
commit66e1f330f5543162b1c4fbe4ce0230d62bb1dbbb (patch)
treed47c1a72579c0fb061c613e7aafa082542c1d978
parent380228c18a95ef51fa20fe6c080994366b4f4c35 (diff)
parentc21519e14b6096be73bad7641dc745789e0fd461 (diff)
Merge remote-tracking branch 'upstream/master'
-rwxr-xr-xbuild-mac/mailcore2.xcodeproj/project.pbxproj12
-rw-r--r--src/async/pop/MCPOPFetchHeaderOperation.cc4
-rw-r--r--src/cmake/objc.cmake1
-rw-r--r--src/cmake/public-headers.cmake1
-rw-r--r--src/core/abstract/MCMessageHeader.cc3
-rw-r--r--src/core/basetypes/MCBase64.c3
-rw-r--r--src/core/basetypes/MCConnectionLoggerUtils.cc7
-rw-r--r--src/core/basetypes/MCIndexSet.cc4
-rw-r--r--src/core/basetypes/MCOperationQueue.cc3
-rw-r--r--src/core/basetypes/MCString.cc11
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc13
-rw-r--r--src/core/provider/MCNetService.cc2
-rw-r--r--src/core/security/MCCertificateUtils.cc4
-rw-r--r--src/core/zip/MiniZip/unzip.c7
-rw-r--r--src/core/zip/MiniZip/zip.c4
-rwxr-xr-xsrc/objc/imap/MCOIMAPSession.h14
-rw-r--r--src/objc/provider/MCOMailProvider.mm2
-rw-r--r--src/objc/provider/MCONetService.mm8
-rw-r--r--src/objc/utils/MCOIndexSet.h3
-rw-r--r--src/objc/utils/MCOIndexSet.mm10
-rw-r--r--src/objc/utils/MCOUtils.h1
-rw-r--r--src/objc/utils/NSError+MCO.mm1
-rw-r--r--src/objc/utils/NSIndexSet+MCO.h18
-rw-r--r--src/objc/utils/NSIndexSet+MCO.m25
24 files changed, 93 insertions, 68 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj
index 01e8175d..c34b47a1 100755
--- a/build-mac/mailcore2.xcodeproj/project.pbxproj
+++ b/build-mac/mailcore2.xcodeproj/project.pbxproj
@@ -262,6 +262,10 @@
C68B2AEF1778A869005E61EF /* MCConnectionLogger.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C68B2AEB1778A589005E61EF /* MCConnectionLogger.h */; };
C68B2AF717797389005E61EF /* MCConnectionLoggerUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = C68B2AF517797389005E61EF /* MCConnectionLoggerUtils.cc */; };
C68B2AF817797389005E61EF /* MCConnectionLoggerUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = C68B2AF517797389005E61EF /* MCConnectionLoggerUtils.cc */; };
+ C69BA85B17DEFCCB00D601B7 /* NSIndexSet+MCO.m in Sources */ = {isa = PBXBuildFile; fileRef = C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */; };
+ C69BA85C17DEFCCB00D601B7 /* NSIndexSet+MCO.m in Sources */ = {isa = PBXBuildFile; fileRef = C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */; };
+ C69BA85D17DEFD9A00D601B7 /* NSIndexSet+MCO.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */; };
+ C69BA85E17DEFD9F00D601B7 /* NSIndexSet+MCO.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */; };
C6A81B931706840C00882C15 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6A81B921706840C00882C15 /* UIKit.framework */; };
C6A81B941706840C00882C15 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C64EA78F169F259200778456 /* Foundation.framework */; };
C6A81B961706840C00882C15 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6A81B951706840C00882C15 /* CoreGraphics.framework */; };
@@ -756,6 +760,7 @@
943F1AA017D9736100F0C798 /* MCIMAPConnectOperation.h in CopyFiles */,
4BE4029217B548D900ECC5E4 /* MCIMAPQuotaOperation.h in CopyFiles */,
4BE4029117B548B900ECC5E4 /* MCOIMAPQuotaOperation.h in CopyFiles */,
+ C69BA85E17DEFD9F00D601B7 /* NSIndexSet+MCO.h in CopyFiles */,
C6E665001790963E0063F2CF /* MCIMAPMessageRenderingOperation.h in CopyFiles */,
DAE42E89178F7E1800E0DB8F /* MCOIMAPMessageRenderingOperation.h in CopyFiles */,
C63D316617C997B400A4D993 /* MCOIMAPIdentity.h in CopyFiles */,
@@ -991,6 +996,7 @@
C6BA2B141705F4E6003F0E9E /* MCOMessagePart.h in CopyFiles */,
C6D6F95C171E5D65006F5B28 /* MCJSON.h in CopyFiles */,
C6BA2B151705F4E6003F0E9E /* MCOIMAPFolderInfoOperation.h in CopyFiles */,
+ C69BA85D17DEFD9A00D601B7 /* NSIndexSet+MCO.h in CopyFiles */,
C6BA2B161705F4E6003F0E9E /* MCOIMAPFetchMessagesOperation.h in CopyFiles */,
C6BA2B171705F4E6003F0E9E /* MCOIMAPCopyMessagesOperation.h in CopyFiles */,
C6D6F95D171E5D67006F5B28 /* MCMD5.h in CopyFiles */,
@@ -1395,6 +1401,8 @@
C68B2AEB1778A589005E61EF /* MCConnectionLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCConnectionLogger.h; sourceTree = "<group>"; };
C68B2AF517797389005E61EF /* MCConnectionLoggerUtils.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCConnectionLoggerUtils.cc; sourceTree = "<group>"; };
C68B2AF617797389005E61EF /* MCConnectionLoggerUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCConnectionLoggerUtils.h; sourceTree = "<group>"; };
+ C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSIndexSet+MCO.h"; sourceTree = "<group>"; };
+ C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSIndexSet+MCO.m"; sourceTree = "<group>"; };
C6A81B911706840C00882C15 /* test-ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "test-ios.app"; sourceTree = BUILT_PRODUCTS_DIR; };
C6A81B921706840C00882C15 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
C6A81B951706840C00882C15 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
@@ -2129,6 +2137,8 @@
C6F5B9F316FEAC6C00D9DABD /* MCOIndexSet.mm */,
C6CCC5C616FFE5190077A5FC /* MCORange.mm */,
C6CCC5C816FFE54F0077A5FC /* MCORange.h */,
+ C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */,
+ C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */,
);
path = utils;
sourceTree = "<group>";
@@ -2531,6 +2541,7 @@
C64EA81116A299ED00778456 /* MCIMAPAppendMessageOperation.cc in Sources */,
C64EA81416A29A2300778456 /* MCIMAPCopyMessagesOperation.cc in Sources */,
C64EA81716A29A8700778456 /* MCIMAPExpungeOperation.cc in Sources */,
+ C69BA85B17DEFCCB00D601B7 /* NSIndexSet+MCO.m in Sources */,
C64EA81A16A29AF200778456 /* MCIMAPFetchMessagesOperation.cc in Sources */,
C64EA81D16A29DC500778456 /* MCIMAPFetchContentOperation.cc in Sources */,
C64EA82016A29E4100778456 /* MCIMAPStoreFlagsOperation.cc in Sources */,
@@ -2727,6 +2738,7 @@
C6BA2BCA1705F4E6003F0E9E /* MCIMAPAppendMessageOperation.cc in Sources */,
C6BA2BCB1705F4E6003F0E9E /* MCIMAPCopyMessagesOperation.cc in Sources */,
C6BA2BCC1705F4E6003F0E9E /* MCIMAPExpungeOperation.cc in Sources */,
+ C69BA85C17DEFCCB00D601B7 /* NSIndexSet+MCO.m in Sources */,
C6BA2BCD1705F4E6003F0E9E /* MCIMAPFetchMessagesOperation.cc in Sources */,
C6BA2BCE1705F4E6003F0E9E /* MCIMAPFetchContentOperation.cc in Sources */,
C6BA2BCF1705F4E6003F0E9E /* MCIMAPStoreFlagsOperation.cc in Sources */,
diff --git a/src/async/pop/MCPOPFetchHeaderOperation.cc b/src/async/pop/MCPOPFetchHeaderOperation.cc
index 3c6360a8..60a0e8a6 100644
--- a/src/async/pop/MCPOPFetchHeaderOperation.cc
+++ b/src/async/pop/MCPOPFetchHeaderOperation.cc
@@ -44,6 +44,8 @@ void POPFetchHeaderOperation::main()
{
ErrorCode error;
mHeader = session()->session()->fetchHeader(mMessageIndex, &error);
- mHeader->retain();
+ if (mHeader != NULL) {
+ mHeader->retain();
+ }
setError(error);
}
diff --git a/src/cmake/objc.cmake b/src/cmake/objc.cmake
index e3e461c9..35dfb221 100644
--- a/src/cmake/objc.cmake
+++ b/src/cmake/objc.cmake
@@ -82,6 +82,7 @@ set(objc_utils_files
objc/utils/NSObject+MCO.mm
objc/utils/NSString+MCO.mm
objc/utils/NSValue+MCO.mm
+ objc/utils/NSIndexSet+MCO.m
)
IF(APPLE)
diff --git a/src/cmake/public-headers.cmake b/src/cmake/public-headers.cmake
index 8395072a..0aad67f6 100644
--- a/src/cmake/public-headers.cmake
+++ b/src/cmake/public-headers.cmake
@@ -113,6 +113,7 @@ objc/utils/MCOOperation.h
objc/abstract/MCOConstants.h
objc/utils/MCOIndexSet.h
objc/utils/MCORange.h
+objc/utils/NSIndexSet+MCO.h
objc/abstract/MCOAbstract.h
objc/abstract/MCOAbstractMessage.h
objc/abstract/MCOAbstractMessagePart.h
diff --git a/src/core/abstract/MCMessageHeader.cc b/src/core/abstract/MCMessageHeader.cc
index 34aba8f5..a902494f 100644
--- a/src/core/abstract/MCMessageHeader.cc
+++ b/src/core/abstract/MCMessageHeader.cc
@@ -1122,9 +1122,6 @@ void MessageHeader::importIMAPInternalDate(struct mailimap_date_time * date)
Array * MessageHeader::recipientWithReplyAll(bool replyAll, bool includeTo, bool includeCc, Array * senderEmails)
{
- Set * senderEmailsSet;
- senderEmailsSet = Set::setWithArray(senderEmails);
-
bool hasCc;
bool hasTo;
Set * addedAddresses;
diff --git a/src/core/basetypes/MCBase64.c b/src/core/basetypes/MCBase64.c
index 87ee97bd..5ebe5bc9 100644
--- a/src/core/basetypes/MCBase64.c
+++ b/src/core/basetypes/MCBase64.c
@@ -67,10 +67,9 @@ char * MCEncodeBase64(const char * in, int len)
char * MCDecodeBase64(const char * in, int len)
{
char * output, * out;
- int i, c1, c2, c3, c4, out_len;
+ int i, c1, c2, c3, c4;
int max_out_len;
- out_len = 0;
max_out_len = ((len + 3) * 4 / 3) + 1;
output = malloc(max_out_len);
diff --git a/src/core/basetypes/MCConnectionLoggerUtils.cc b/src/core/basetypes/MCConnectionLoggerUtils.cc
index 234713e7..08ba2334 100644
--- a/src/core/basetypes/MCConnectionLoggerUtils.cc
+++ b/src/core/basetypes/MCConnectionLoggerUtils.cc
@@ -15,32 +15,25 @@
mailcore::ConnectionLogType mailcore::getConnectionType(int log_type)
{
ConnectionLogType type = (ConnectionLogType) -1;
- bool isBuffer = false;
switch (log_type) {
case MAILSTREAM_LOG_TYPE_ERROR_PARSE:
type = ConnectionLogTypeErrorParse;
- isBuffer = true;
break;
case MAILSTREAM_LOG_TYPE_ERROR_RECEIVED:
type = ConnectionLogTypeErrorReceived;
- isBuffer = true;
break;
case MAILSTREAM_LOG_TYPE_ERROR_SENT:
type = ConnectionLogTypeErrorSent;
- isBuffer = true;
break;
case MAILSTREAM_LOG_TYPE_DATA_RECEIVED:
type = ConnectionLogTypeReceived;
- isBuffer = true;
break;
case MAILSTREAM_LOG_TYPE_DATA_SENT:
type = ConnectionLogTypeSent;
- isBuffer = true;
break;
case MAILSTREAM_LOG_TYPE_DATA_SENT_PRIVATE:
type = ConnectionLogTypeSentPrivate;
- isBuffer = true;
break;
}
return type;
diff --git a/src/core/basetypes/MCIndexSet.cc b/src/core/basetypes/MCIndexSet.cc
index 59596dfd..db25f5eb 100644
--- a/src/core/basetypes/MCIndexSet.cc
+++ b/src/core/basetypes/MCIndexSet.cc
@@ -217,7 +217,9 @@ void IndexSet::addRange(Range range)
if (rangeIndex > 0) {
tryToMergeAdjacentRanges(rangeIndex - 1);
}
- tryToMergeAdjacentRanges(rangeIndex);
+ if (rangeIndex < mCount - 1) {
+ tryToMergeAdjacentRanges(rangeIndex);
+ }
}
void IndexSet::tryToMergeAdjacentRanges(unsigned int rangeIndex)
diff --git a/src/core/basetypes/MCOperationQueue.cc b/src/core/basetypes/MCOperationQueue.cc
index 2c00f930..c5270161 100644
--- a/src/core/basetypes/MCOperationQueue.cc
+++ b/src/core/basetypes/MCOperationQueue.cc
@@ -140,15 +140,12 @@ void OperationQueue::checkRunningOnMainThread(void * context)
void OperationQueue::checkRunningAfterDelay(void * context)
{
- bool quitting = false;
-
pthread_mutex_lock(&mLock);
if (!mQuitting) {
if (mOperations->count() == 0) {
MCLog("trying to quit %p", this);
mailsem_up(mOperationSem);
mQuitting = true;
- quitting = true;
}
}
pthread_mutex_unlock(&mLock);
diff --git a/src/core/basetypes/MCString.cc b/src/core/basetypes/MCString.cc
index 43c9e7ae..d8863f44 100644
--- a/src/core/basetypes/MCString.cc
+++ b/src/core/basetypes/MCString.cc
@@ -589,10 +589,6 @@ static char * extract_subject(char * str, int keep_bracket)
*/
while (len > 0) {
- int chg;
-
- chg = 0;
-
/* subj-trailer = "(fwd)" / WSP */
if (subj[len - 1] == ' ') {
subj[len - 1] = '\0';
@@ -655,15 +651,10 @@ static char * extract_subject(char * str, int keep_bracket)
*/
if (len >= 5) {
- size_t saved_begin;
-
- saved_begin = begin;
if (strncasecmp(subj + begin, "[fwd:", 5) == 0) {
begin += 5;
- if (subj[len - 1] != ']')
- saved_begin = begin;
- else {
+ if (subj[len - 1] == ']') {
subj[len - 1] = '\0';
len --;
do_repeat_6 = 1;
diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc
index 31bbbc62..4d1905a9 100755
--- a/src/core/imap/MCIMAPSession.cc
+++ b/src/core/imap/MCIMAPSession.cc
@@ -214,17 +214,12 @@ static int compareValuesUnsignedLong(void * value1, void * value2, void * contex
static struct mailimap_set * setFromArray(Array * array)
{
- unsigned int currentIndex;
- unsigned int currentFirst;
- unsigned int currentValue;
- unsigned int lastValue;
+ unsigned int currentIndex = 0;
+ unsigned int currentFirst = 0;
+ unsigned int currentValue = 0;
+ unsigned int lastValue = 0;
struct mailimap_set * imap_set;
- currentFirst = 0;
- currentValue = 0;
- lastValue = 0;
- currentIndex = 0;
-
array = array->sortedArray(compareValuesUnsignedLong, NULL);
imap_set = mailimap_set_new_empty();
diff --git a/src/core/provider/MCNetService.cc b/src/core/provider/MCNetService.cc
index f760dc61..77a21ce2 100644
--- a/src/core/provider/MCNetService.cc
+++ b/src/core/provider/MCNetService.cc
@@ -102,7 +102,7 @@ ConnectionType NetService::connectionType()
String * NetService::normalizedHostnameWithEmail(String * email)
{
Array *components = email->componentsSeparatedByString(MCSTR("@"));
- String *hostname = (String *) mHostname->copy();
+ String *hostname = (String *) mHostname->copy()->autorelease();
if (components->count() != 0) {
hostname->replaceOccurrencesOfString(MCSTR("{domain}"), (String *) components->lastObject());
return hostname;
diff --git a/src/core/security/MCCertificateUtils.cc b/src/core/security/MCCertificateUtils.cc
index f2a63907..00f4ed9e 100644
--- a/src/core/security/MCCertificateUtils.cc
+++ b/src/core/security/MCCertificateUtils.cc
@@ -53,6 +53,10 @@ bool mailcore::checkCertificate(mailstream * stream, String * hostname)
}
status = SecTrustEvaluate(trust, &trustResult);
+ if (status != noErr) {
+ goto free_certs;
+ }
+
switch (trustResult) {
case kSecTrustResultUnspecified:
case kSecTrustResultProceed:
diff --git a/src/core/zip/MiniZip/unzip.c b/src/core/zip/MiniZip/unzip.c
index a9a9b5ab..6093fb28 100644
--- a/src/core/zip/MiniZip/unzip.c
+++ b/src/core/zip/MiniZip/unzip.c
@@ -725,10 +725,7 @@ local int unzlocal_GetCurrentFileInfoInternal (file,
if ((file_info.size_file_comment>0) && (commentBufferSize>0))
if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead)
err=UNZ_ERRNO;
- lSeek+=file_info.size_file_comment - uSizeRead;
}
- else
- lSeek+=file_info.size_file_comment;
if ((err==UNZ_OK) && (pfile_info!=NULL))
*pfile_info=file_info;
@@ -1116,10 +1113,6 @@ extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
}
}
- if ((s->cur_file_info.compression_method!=0) &&
- (s->cur_file_info.compression_method!=Z_DEFLATED))
- err=UNZ_BADZIPFILE;
-
pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc;
pfile_in_zip_read_info->crc32=0;
pfile_in_zip_read_info->compression_method =
diff --git a/src/core/zip/MiniZip/zip.c b/src/core/zip/MiniZip/zip.c
index 76ac9cf1..b7d2f258 100644
--- a/src/core/zip/MiniZip/zip.c
+++ b/src/core/zip/MiniZip/zip.c
@@ -604,6 +604,7 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
if (err!=ZIP_OK)
{
ZCLOSE(ziinit.z_filefunc, ziinit.filestream);
+ TRYFREE(zi);
return NULL;
}
@@ -1045,8 +1046,7 @@ extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32)
uLong uTotalOutBefore;
if (zi->ci.stream.avail_out == 0)
{
- if (zipFlushWriteBuffer(zi) == ZIP_ERRNO)
- err = ZIP_ERRNO;
+ zipFlushWriteBuffer(zi);
zi->ci.stream.avail_out = (uInt)Z_BUFSIZE;
zi->ci.stream.next_out = zi->ci.buffered_data;
}
diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h
index f4c6b85b..0759f714 100755
--- a/src/objc/imap/MCOIMAPSession.h
+++ b/src/objc/imap/MCOIMAPSession.h
@@ -145,16 +145,6 @@
- (MCOIMAPFolderInfoOperation *) folderInfoOperation:(NSString *)folder;
/**
- Returns an operation that gets the list of subscribed folders.
-
- MCOIMAPFetchFoldersOperation * op = [session fetchAllFoldersOperation];
- [op start:^(NSError * error, NSArray * folders) {
- ...
- }];
-*/
-
-
-/**
Returns an operation that retrieves folder status (like UIDNext - Unseen -)
MCOIMAPFolderStatusOperation * op = [session folderStatusOperation:@"INBOX"];
@@ -170,14 +160,12 @@
/**
Returns an operation that gets the list of subscribed folders.
- MCOIMAPFetchFoldersOperation * op = [session fetchAllFoldersOperation];
+ MCOIMAPFetchFoldersOperation * op = [session fetchSubscribedFoldersOperation];
[op start:^(NSError * error, NSArray * folders) {
...
}];
*/
-
-
- (MCOIMAPFetchFoldersOperation *) fetchSubscribedFoldersOperation;
/**
diff --git a/src/objc/provider/MCOMailProvider.mm b/src/objc/provider/MCOMailProvider.mm
index e35eaec5..da328dad 100644
--- a/src/objc/provider/MCOMailProvider.mm
+++ b/src/objc/provider/MCOMailProvider.mm
@@ -36,7 +36,7 @@
+ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
{
mailcore::MailProvider * provider = (mailcore::MailProvider *) object;
- return [[self alloc] initWithMCProvider:provider];
+ return [[[self alloc] initWithMCProvider:provider] autorelease];
}
- (id) initWithInfo:(NSDictionary *)info
diff --git a/src/objc/provider/MCONetService.mm b/src/objc/provider/MCONetService.mm
index 260cb45f..e24ec909 100644
--- a/src/objc/provider/MCONetService.mm
+++ b/src/objc/provider/MCONetService.mm
@@ -79,14 +79,6 @@ MCO_OBJC_SYNTHESIZE_SCALAR(MCOConnectionType, mailcore::ConnectionType, setConne
- (NSString *) hostnameWithEmail:(NSString *)email
{
- NSString *result = nil;
- NSArray *components = [email componentsSeparatedByString:@"@"];
- if (components.count == 0) {
- return self.hostname;
- }
- else {
- result = [self.hostname stringByReplacingOccurrencesOfString:@"{domain}" withString:[components lastObject]];
- }
return [NSString mco_stringWithMCString:_netService->normalizedHostnameWithEmail(email.mco_mcString)];
}
diff --git a/src/objc/utils/MCOIndexSet.h b/src/objc/utils/MCOIndexSet.h
index d80aa322..2bb2684e 100644
--- a/src/objc/utils/MCOIndexSet.h
+++ b/src/objc/utils/MCOIndexSet.h
@@ -57,6 +57,9 @@
/** Enumerates all the indexes of the index set.*/
- (void) enumerateIndexes:(void (^)(uint64_t idx))block;
+/** Returns an NSIndexSet from a MCOIndexSet */
+- (NSIndexSet *) nsIndexSet;
+
@end
#endif
diff --git a/src/objc/utils/MCOIndexSet.mm b/src/objc/utils/MCOIndexSet.mm
index 628ae23f..156be13e 100644
--- a/src/objc/utils/MCOIndexSet.mm
+++ b/src/objc/utils/MCOIndexSet.mm
@@ -147,4 +147,14 @@ MCO_SYNTHESIZE_NSCODING
}
}
+- (NSIndexSet *) nsIndexSet
+{
+ NSMutableIndexSet * result = [NSMutableIndexSet indexSet];
+ MCORange * allRanges = [self allRanges];
+ for(unsigned int i = 0 ; i < [self rangesCount] ; i ++) {
+ [result addIndexesInRange:NSMakeRange(allRanges[i].location, allRanges[i].length)];
+ }
+ return result;
+}
+
@end
diff --git a/src/objc/utils/MCOUtils.h b/src/objc/utils/MCOUtils.h
index 3a2c8d82..e2f2e69c 100644
--- a/src/objc/utils/MCOUtils.h
+++ b/src/objc/utils/MCOUtils.h
@@ -23,5 +23,6 @@
#import <MailCore/MCOConstants.h>
#import <MailCore/MCOIndexSet.h>
#import <MailCore/MCORange.h>
+#import <MailCore/NSIndexSet+MCO.h>
#endif
diff --git a/src/objc/utils/NSError+MCO.mm b/src/objc/utils/NSError+MCO.mm
index b8ab06e9..8b903043 100644
--- a/src/objc/utils/NSError+MCO.mm
+++ b/src/objc/utils/NSError+MCO.mm
@@ -64,6 +64,7 @@ static NSString * MCOLocalizedDescriptionTable[] = {
NSError *error = [NSError errorWithDomain:MCOErrorDomain
code:(int)code
userInfo:userInfo];
+ [userInfo release];
return error;
}
@end
diff --git a/src/objc/utils/NSIndexSet+MCO.h b/src/objc/utils/NSIndexSet+MCO.h
new file mode 100644
index 00000000..66aa5229
--- /dev/null
+++ b/src/objc/utils/NSIndexSet+MCO.h
@@ -0,0 +1,18 @@
+//
+// NSIndexSet+MCO.h
+// mailcore2
+//
+// Created by Hoa V. DINH on 9/10/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class MCOIndexSet;
+
+@interface NSIndexSet (MCO)
+
+/** Returns a MCOIndexSet from an NSIndexSet */
+- (MCOIndexSet *) mcoIndexSet;
+
+@end
diff --git a/src/objc/utils/NSIndexSet+MCO.m b/src/objc/utils/NSIndexSet+MCO.m
new file mode 100644
index 00000000..dd2b83d0
--- /dev/null
+++ b/src/objc/utils/NSIndexSet+MCO.m
@@ -0,0 +1,25 @@
+//
+// NSIndexSet+MCO.m
+// mailcore2
+//
+// Created by Hoa V. DINH on 9/10/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "NSIndexSet+MCO.h"
+#import "MCOIndexSet.h"
+
+@implementation NSIndexSet (MCO)
+
+- (MCOIndexSet *) mcoIndexSet
+{
+ MCOIndexSet * result = [MCOIndexSet indexSet];;
+
+ [self enumerateRangesUsingBlock:^(NSRange range, BOOL * stop) {
+ [result addRange:MCORangeMake(range.location, range.length)];
+ }];
+
+ return result;
+}
+
+@end