aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-03-24 19:34:54 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-03-24 19:53:03 -0700
commit2809c1d417029074d298e52d61edf7e78e96bc80 (patch)
treedaba56ef8c10ddea5d733b78a70a04505cbf8db8 /src/core
parent8b12c82b11e21914bfbd03de7c165d9e7183edaf (diff)
Fixed potential crash (fixed #658)
Diffstat (limited to 'src/core')
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc26
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;