From 1c79f171a80232a243464d7bfde1ac55006cc2de Mon Sep 17 00:00:00 2001 From: "bienvenu%nventure.com" Date: Fri, 19 Aug 2005 17:10:42 +0000 Subject: [PATCH] fix crash deleting a message in a local folder that was just moved, sr=mscott 303239 git-svn-id: svn://10.0.0.236/trunk@178255 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp b/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp index 70e9ca23e26..6f5de14a116 100644 --- a/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp +++ b/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp @@ -118,9 +118,16 @@ nsMsgDBService::~nsMsgDBService() NS_IMETHODIMP nsMsgDBService::OpenFolderDB(nsIMsgFolder *aFolder, PRBool aCreate, PRBool aLeaveInvalidDB, nsIMsgDatabase **_retval) { NS_ENSURE_ARG(aFolder); - *_retval = nsMsgDatabase::FindInCache(aFolder); - if (*_retval) + nsMsgDatabase *cacheDB = (nsMsgDatabase *) nsMsgDatabase::FindInCache(aFolder); + if (cacheDB) + { + // this db could have ended up in the folder cache w/o an m_folder pointer via + // OpenMailDBFromFileSpec. If so, take this chance to fix the folder. + if (!cacheDB->m_folder) + cacheDB->m_folder = aFolder; + *_retval = cacheDB; // FindInCache already addRefed. return NS_OK; + } nsCOMPtr incomingServer; nsresult rv = aFolder->GetServer(getter_AddRefs(incomingServer));