don't crash when mDatabase is null

This commit is contained in:
alecf%netscape.com 1999-08-07 00:45:04 +00:00
parent a47b7f9a04
commit d1b778a237

View File

@ -447,6 +447,8 @@ NS_IMETHODIMP nsImapMailFolder::GetMessages(nsIEnumerator* *result)
{
nsCOMPtr<nsIEnumerator> msgHdrEnumerator;
nsMessageFromMsgHdrEnumerator *messageEnumerator = nsnull;
rv = NS_ERROR_UNEXPECTED;
if (mDatabase)
rv = mDatabase->EnumerateMessages(getter_AddRefs(msgHdrEnumerator));
if(NS_SUCCEEDED(rv))
rv = NS_NewMessageFromMsgHdrEnumerator(msgHdrEnumerator,
@ -642,9 +644,9 @@ NS_IMETHODIMP nsImapMailFolder::GetName(PRUnichar ** name)
nsString folderName;
nsCOMPtr<nsIDBFolderInfo> dbFolderInfo;
if (mDatabase) {
mDatabase->GetDBFolderInfo(getter_AddRefs(dbFolderInfo));
if (dbFolderInfo)
{
if (dbFolderInfo) {
dbFolderInfo->GetMailboxName(folderName);
m_haveReadNameFromDB = PR_TRUE;
*name = folderName.ToNewCString();
@ -652,6 +654,7 @@ NS_IMETHODIMP nsImapMailFolder::GetName(PRUnichar ** name)
}
}
}
}
#endif
}
nsAutoString folderName;
@ -1201,6 +1204,7 @@ NS_IMETHODIMP nsImapMailFolder::UpdateImapMailboxInfo(
return rv;
if (!mDatabase)
return NS_ERROR_NULL_POINTER;
if (mDatabase)
mDatabase->AddListener(this);
}
if (aSpec->folderSelected)
@ -1211,13 +1215,18 @@ NS_IMETHODIMP nsImapMailFolder::UpdateImapMailboxInfo(
nsCOMPtr<nsIDBFolderInfo> dbFolderInfo;
PRInt32 imapUIDValidity = 0;
rv = NS_ERROR_UNEXPECTED;
if (mDatabase)
rv = mDatabase->GetDBFolderInfo(getter_AddRefs(dbFolderInfo));
if (NS_SUCCEEDED(rv) && dbFolderInfo)
dbFolderInfo->GetImapUidValidity(&imapUIDValidity);
if (mDatabase) {
mDatabase->ListAllKeys(existingKeys);
if (mDatabase->ListAllOfflineDeletes(&existingKeys) > 0)
existingKeys.QuickSort();
}
if ((imapUIDValidity != aSpec->folder_UIDVALIDITY) /* && // if UIDVALIDITY Changed
!NET_IsOffline() */)
{
@ -1226,6 +1235,7 @@ NS_IMETHODIMP nsImapMailFolder::UpdateImapMailboxInfo(
TNeoFolderInfoTransfer *originalInfo = NULL;
originalInfo = new TNeoFolderInfoTransfer(dbFolderInfo);
#endif // 0
if (mDatabase)
mDatabase->ForceClosed();
mDatabase = null_nsCOMPtr();
@ -1250,15 +1260,18 @@ NS_IMETHODIMP nsImapMailFolder::UpdateImapMailboxInfo(
else if (NS_SUCCEEDED(rv) && mDatabase)
{
#if TRANSFER_INFO
if (originalInfo)
if (originalInfo && mDatabase)
{
originalInfo->TransferFolderInfo(mDatabase->m_dbFolderInfo);
delete originalInfo;
}
#endif
SummaryChanged();
rv = NS_ERROR_UNEXPECTED;
if (mDatabase) {
mDatabase->AddListener(this);
rv = mDatabase->GetDBFolderInfo(getter_AddRefs(dbFolderInfo));
}
}
// store the new UIDVALIDITY value
@ -1294,8 +1307,10 @@ NS_IMETHODIMP nsImapMailFolder::UpdateImapMailboxInfo(
PRUint32 total;
// It would be nice to notify RDF or whoever of a mass delete here.
if (mDatabase) {
mDatabase->DeleteMessages(&keysToDelete,NULL);
total = keysToDelete.GetSize();
}
}
// if this is the INBOX, tell the stand-alone biff about the new high water mark
if (mFlags & MSG_FOLDER_FLAG_INBOX)