aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/imap/MCIMAPSession.cpp
diff options
context:
space:
mode:
authorGravatar Hoà V. DINH <dinh.viet.hoa@gmail.com>2016-02-03 09:28:28 -0800
committerGravatar Hoà V. DINH <dinh.viet.hoa@gmail.com>2016-02-03 09:28:28 -0800
commitd8e239a6c25e5e8f46af1cd4ea8b4d4c14ddd35b (patch)
tree97a62a06271301a9a7900508a54b9de2500e80fe /src/core/imap/MCIMAPSession.cpp
parentb3fc180c42e4b1b783ba08ec48d8ab9f80001548 (diff)
parent447c1cad2de7b13fd7c7dc581de4e6a1ced3663e (diff)
Merge pull request #1346 from disaykin/master
Reduce memory usage when fetch message body by IMAP
Diffstat (limited to 'src/core/imap/MCIMAPSession.cpp')
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/core/imap/MCIMAPSession.cpp b/src/core/imap/MCIMAPSession.cpp
index 93427d8d..ae05186a 100755
--- a/src/core/imap/MCIMAPSession.cpp
+++ b/src/core/imap/MCIMAPSession.cpp
@@ -2638,6 +2638,10 @@ Data * IMAPSession::fetchMessage(String * folder, bool identifier_is_uid, uint32
return data;
}
+static void nstringDeallocator(char * bytes, unsigned int length) {
+ mailimap_nstring_free(bytes);
+};
+
Data * IMAPSession::fetchMessageAttachment(String * folder, bool identifier_is_uid,
uint32_t identifier, String * partID,
Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError)
@@ -2697,10 +2701,10 @@ Data * IMAPSession::fetchMessageAttachment(String * folder, bool identifier_is_u
return NULL;
}
- data = Data::dataWithBytes(text, (unsigned int) text_length);
+ data = Data::data();
+ data->takeBytesOwnership(text, (unsigned int) text_length, nstringDeallocator);
data = data->decodedDataUsingEncoding(encoding);
- mailimap_nstring_free(text);
* pError = ErrorNone;
return data;