diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2014-03-24 19:34:54 -0700 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2014-03-24 19:53:03 -0700 |
commit | 2809c1d417029074d298e52d61edf7e78e96bc80 (patch) | |
tree | daba56ef8c10ddea5d733b78a70a04505cbf8db8 | |
parent | 8b12c82b11e21914bfbd03de7c165d9e7183edaf (diff) |
Fixed potential crash (fixed #658)
-rwxr-xr-x | src/core/imap/MCIMAPSession.cc | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index b387e48f..ea3f7462 100755 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -1431,19 +1431,21 @@ Array * /* IMAPFolder */ IMAPSession::fetchAllFolders(ErrorCode * pError) if (* pError == ErrorConnection) mShouldDisconnect = true; - bool hasInbox = false; - mc_foreacharray(IMAPFolder, folder, result) { - if (folder->path()->isEqual(MCSTR("INBOX"))) { - hasInbox = true; + if (result != NULL) { + bool hasInbox = false; + mc_foreacharray(IMAPFolder, folder, result) { + if (folder->path()->isEqual(MCSTR("INBOX"))) { + hasInbox = true; + } + } + + if (!hasInbox) { + r = mailimap_list(mImap, "", "INBOX", &imap_folders); + Array * inboxResult = resultsWithError(r, imap_folders, pError); + if (* pError == ErrorConnection) + mShouldDisconnect = true; + result->addObjectsFromArray(inboxResult); } - } - - if (!hasInbox) { - r = mailimap_list(mImap, "", "INBOX", &imap_folders); - Array * inboxResult = resultsWithError(r, imap_folders, pError); - if (* pError == ErrorConnection) - mShouldDisconnect = true; - result->addObjectsFromArray(inboxResult); } return result; |