aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/rfc822
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-10-24 23:55:12 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-10-24 23:55:12 -0700
commit386f84abe048c4b37cef42195d612b480021df3f (patch)
tree99ed0ecf0a60706e88c295203b5c1d84836f0f80 /src/core/rfc822
parent46242b129d4e22a0d95a23263339cb273c98b44d (diff)
Fixed crash, additional memory usage optimization
Diffstat (limited to 'src/core/rfc822')
-rw-r--r--src/core/rfc822/MCMessageParser.cc6
-rw-r--r--src/core/rfc822/MCMessageParser.h10
-rw-r--r--src/core/rfc822/MCMessageParserMac.mm34
3 files changed, 42 insertions, 8 deletions
diff --git a/src/core/rfc822/MCMessageParser.cc b/src/core/rfc822/MCMessageParser.cc
index f8a25bda..404bc862 100644
--- a/src/core/rfc822/MCMessageParser.cc
+++ b/src/core/rfc822/MCMessageParser.cc
@@ -105,12 +105,12 @@ AbstractPart * MessageParser::mainPart()
Data * MessageParser::data()
{
+#if __APPLE__
if (mNSData != NULL) {
return dataFromNSData();
}
- else {
- return mData;
- }
+#endif
+ return mData;
}
String * MessageParser::description()
diff --git a/src/core/rfc822/MCMessageParser.h b/src/core/rfc822/MCMessageParser.h
index 3b34ab9e..eba0e052 100644
--- a/src/core/rfc822/MCMessageParser.h
+++ b/src/core/rfc822/MCMessageParser.h
@@ -5,8 +5,8 @@
#include <MailCore/MCBaseTypes.h>
#include <MailCore/MCAbstractMessage.h>
#include <MailCore/MCAbstractPart.h>
-#ifdef __OBJC__
-#import <Foundation/Foundation.h>
+#ifdef __APPLE__
+#import <CoreFoundation/CoreFoundation.h>
#endif
#ifdef __cplusplus
@@ -42,10 +42,10 @@ namespace mailcore {
virtual HashMap * serializable();
-#ifdef __OBJC__
+#ifdef __APPLE__
public:
- static MessageParser * messageParserWithData(NSData * data);
- MessageParser(NSData * data);
+ static MessageParser * messageParserWithData(CFDataRef data);
+ MessageParser(CFDataRef data);
#endif
private:
diff --git a/src/core/rfc822/MCMessageParserMac.mm b/src/core/rfc822/MCMessageParserMac.mm
new file mode 100644
index 00000000..6748ed1a
--- /dev/null
+++ b/src/core/rfc822/MCMessageParserMac.mm
@@ -0,0 +1,34 @@
+//
+// MCMessageParserMac.m
+// mailcore2
+//
+// Created by Hoa V. DINH on 10/24/14.
+// Copyright (c) 2014 MailCore. All rights reserved.
+//
+
+#include "MCMessageParser.h"
+
+#import <Foundation/Foundation.h>
+
+#import "NSData+MCO.h"
+
+using namespace mailcore;
+
+MessageParser * MessageParser::messageParserWithData(CFDataRef data)
+{
+ MessageParser * parser = new MessageParser(data);
+ return (MessageParser *) parser->autorelease();
+}
+
+MessageParser::MessageParser(CFDataRef data)
+{
+ init();
+
+ setBytes((char *) [(NSData *) data bytes], (unsigned int) [(NSData *) data length]);
+ mNSData = [(NSData *) data retain];
+}
+
+Data * MessageParser::dataFromNSData()
+{
+ return [(NSData *) mNSData mco_mcData];
+}