diff options
author | Dmitry Isaikin <isaikin-dmitry@yandex.ru> | 2016-07-19 06:34:38 +0300 |
---|---|---|
committer | HoĆ V. DINH <dinh.viet.hoa@gmail.com> | 2016-07-18 20:34:38 -0700 |
commit | 3c37b36e6522c777e482292c7818d71612426519 (patch) | |
tree | f63f6f1f2731575cd26fcb083dbfbdf4fd268d6a | |
parent | c0fac8bc860d248f8d3983eb180a2dc5ffcf669f (diff) |
Fix some memory leaks in MCIMAPSession.cpp in case of server error (#1480)
-rw-r--r-- | src/core/imap/MCIMAPSession.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/core/imap/MCIMAPSession.cpp b/src/core/imap/MCIMAPSession.cpp index 8491176f..67ff7341 100644 --- a/src/core/imap/MCIMAPSession.cpp +++ b/src/core/imap/MCIMAPSession.cpp @@ -3444,7 +3444,6 @@ IndexSet * IMAPSession::search(String * folder, IMAPSearchExpression * expressio { struct mailimap_search_key * key; - key = searchKeyFromSearchExpression(expression); selectIfNeeded(folder, pError); if (* pError != ErrorNone) return NULL; @@ -3457,6 +3456,7 @@ IndexSet * IMAPSession::search(String * folder, IMAPSearchExpression * expressio } int r; + key = searchKeyFromSearchExpression(expression); if (mIsGmail) { r = mailimap_uid_search_literalplus(mImap, charset, key, &result_list); } @@ -4329,11 +4329,12 @@ String * IMAPSession::htmlRendering(IMAPMessage * message, String * folder, Erro NULL); * pError = dataCallback->error(); + MC_SAFE_RELEASE(dataCallback); + if (* pError != ErrorNone) { return NULL; } - MC_SAFE_RELEASE(dataCallback); return htmlString; } @@ -4350,12 +4351,13 @@ String * IMAPSession::htmlBodyRendering(IMAPMessage * message, String * folder, * pError = dataCallback->error(); + MC_SAFE_RELEASE(dataCallback); + MC_SAFE_RELEASE(htmlCallback); + if (* pError != ErrorNone) { return NULL; } - MC_SAFE_RELEASE(dataCallback); - MC_SAFE_RELEASE(htmlCallback); return htmlBodyString; } @@ -4412,10 +4414,10 @@ bool IMAPSession::enableFeature(String * feature) struct mailimap_capability_data * result; r = mailimap_enable(mImap, caps, &result); + mailimap_capability_data_free(caps); if (r != MAILIMAP_NO_ERROR) return false; - mailimap_capability_data_free(caps); mailimap_capability_data_free(result); return true; |