diff options
author | Hoà V. DINH <dinh.viet.hoa@gmail.com> | 2016-02-03 09:28:28 -0800 |
---|---|---|
committer | Hoà V. DINH <dinh.viet.hoa@gmail.com> | 2016-02-03 09:28:28 -0800 |
commit | d8e239a6c25e5e8f46af1cd4ea8b4d4c14ddd35b (patch) | |
tree | 97a62a06271301a9a7900508a54b9de2500e80fe /src/core/imap/MCIMAPSession.cpp | |
parent | b3fc180c42e4b1b783ba08ec48d8ab9f80001548 (diff) | |
parent | 447c1cad2de7b13fd7c7dc581de4e6a1ced3663e (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-x | src/core/imap/MCIMAPSession.cpp | 8 |
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; |