From 32cfb997a7ae16beb6f2920e271d14b9cacd6a17 Mon Sep 17 00:00:00 2001 From: "bienvenu%nventure.com" Date: Mon, 6 Dec 2004 02:26:27 +0000 Subject: [PATCH] fix handling of corrupt imap .msf files, sr=mscott patch in 259434 git-svn-id: svn://10.0.0.236/trunk@166290 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mailnews/imap/src/nsImapMailFolder.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mozilla/mailnews/imap/src/nsImapMailFolder.cpp b/mozilla/mailnews/imap/src/nsImapMailFolder.cpp index a4202524d86..a29864a9e7c 100644 --- a/mozilla/mailnews/imap/src/nsImapMailFolder.cpp +++ b/mozilla/mailnews/imap/src/nsImapMailFolder.cpp @@ -676,8 +676,15 @@ nsresult nsImapMailFolder::GetDatabase(nsIMsgWindow *aMsgWindow) if (NS_FAILED(rv)) return rv; nsCOMPtr msgDBService = do_GetService(NS_MSGDB_SERVICE_CONTRACTID, &rv); - if (msgDBService) - folderOpen = msgDBService->OpenFolderDB(this, PR_TRUE, PR_FALSE, getter_AddRefs(mDatabase)); + NS_ENSURE_SUCCESS(rv, rv); + + folderOpen = msgDBService->OpenFolderDB(this, PR_TRUE, PR_FALSE, getter_AddRefs(mDatabase)); + + if (NS_FAILED(folderOpen) && folderOpen != NS_MSG_ERROR_FOLDER_SUMMARY_MISSING) + folderOpen = msgDBService->OpenFolderDB(this, PR_TRUE, PR_TRUE, getter_AddRefs(mDatabase)); + + if (NS_FAILED(folderOpen) && folderOpen != NS_MSG_ERROR_FOLDER_SUMMARY_MISSING) + return folderOpen; if(folderOpen == NS_MSG_ERROR_FOLDER_SUMMARY_MISSING) folderOpen = NS_OK;