From df83c69099d76370fdff887ab7f9f8a8af1dfeb6 Mon Sep 17 00:00:00 2001 From: "bugzilla%standard8.demon.co.uk" Date: Mon, 25 Jul 2005 20:58:26 +0000 Subject: [PATCH] Bug 301935 Crash when trying to send mail and collected address book doesn't exist (part 1 - stop the crash) r=bienvenu,sr=mscott,a=bsmedberg git-svn-id: svn://10.0.0.236/trunk@176557 18797224-902f-48f8-a5cc-f745e15eee43 --- .../addrbook/src/nsAbAddressCollecter.cpp | 20 ++++++++++--------- mozilla/mailnews/compose/src/nsMsgSend.cpp | 9 ++++++--- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/mozilla/mailnews/addrbook/src/nsAbAddressCollecter.cpp b/mozilla/mailnews/addrbook/src/nsAbAddressCollecter.cpp index c7527ba6080..4f2caed02bd 100644 --- a/mozilla/mailnews/addrbook/src/nsAbAddressCollecter.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbAddressCollecter.cpp @@ -89,7 +89,12 @@ NS_IMETHODIMP nsAbAddressCollecter::CollectUnicodeAddress(const PRUnichar *aAddr NS_IMETHODIMP nsAbAddressCollecter::GetCardFromAttribute(const char *aName, const char *aValue, nsIAbCard **aCard) { NS_ENSURE_ARG_POINTER(aCard); - return m_database->GetCardFromAttribute(m_directory, aName, aValue, PR_FALSE /* retain case */, aCard); + if (m_database) + // Please DO NOT change the 3rd param of GetCardFromAttribute() call to + // PR_TRUE (ie, case insensitive) without reading bugs #128535 and #121478. + return m_database->GetCardFromAttribute(m_directory, aName, aValue, PR_FALSE /* retain case */, aCard); + + return NS_ERROR_FAILURE; } NS_IMETHODIMP nsAbAddressCollecter::CollectAddress(const char *aAddress, PRBool aCreateCard, PRUint32 aSendFormat) @@ -124,8 +129,6 @@ NS_IMETHODIMP nsAbAddressCollecter::CollectAddress(const char *aAddress, PRBool nsCOMPtr existingCard; nsCOMPtr cardInstance; - // Please DO NOT change the 3rd param of GetCardFromAttribute() call to - // PR_TRUE (ie, case insensitive) without reading bugs #128535 and #121478. rv = GetCardFromAttribute(kPriEmailColumn, curAddress, getter_AddRefs(existingCard)); if (!existingCard && aCreateCard) { @@ -325,9 +328,7 @@ nsresult nsAbAddressCollecter::Init(void) nsXPIDLCString prefVal; pPrefBranchInt->GetCharPref(PREF_MAIL_COLLECT_ADDRESSBOOK, getter_Copies(prefVal)); - rv = SetAbURI(prefVal.IsEmpty() ? kPersonalAddressbookUri : prefVal.get()); - NS_ENSURE_SUCCESS(rv,rv); - return NS_OK; + return rv = SetAbURI(prefVal.IsEmpty() ? kPersonalAddressbookUri : prefVal.get()); } nsresult nsAbAddressCollecter::AddCardToAddressBook(nsIAbCard *card) @@ -335,9 +336,10 @@ nsresult nsAbAddressCollecter::AddCardToAddressBook(nsIAbCard *card) NS_ENSURE_ARG_POINTER(card); nsCOMPtr addedCard; - nsresult rv = m_directory->AddCard(card, getter_AddRefs(addedCard)); - NS_ENSURE_SUCCESS(rv,rv); - return rv; + if (m_directory) + return m_directory->AddCard(card, getter_AddRefs(addedCard)); + + return NS_ERROR_FAILURE; } nsresult nsAbAddressCollecter::SetAbURI(const char *aURI) diff --git a/mozilla/mailnews/compose/src/nsMsgSend.cpp b/mozilla/mailnews/compose/src/nsMsgSend.cpp index 7cf1a7df125..23992bf0779 100644 --- a/mozilla/mailnews/compose/src/nsMsgSend.cpp +++ b/mozilla/mailnews/compose/src/nsMsgSend.cpp @@ -3457,17 +3457,20 @@ nsMsgComposeAndSend::DeliverFileAsMail() if (mCompFields->GetTo() && *mCompFields->GetTo()) { PL_strcat (buf2, mCompFields->GetTo()); - addressCollecter->CollectAddress(mCompFields->GetTo(), collectAddresses /* create card if one doesn't exist */, sendFormat); + if (addressCollecter) + addressCollecter->CollectAddress(mCompFields->GetTo(), collectAddresses /* create card if one doesn't exist */, sendFormat); } if (mCompFields->GetCc() && *mCompFields->GetCc()) { if (*buf2) PL_strcat (buf2, ","); PL_strcat (buf2, mCompFields->GetCc()); - addressCollecter->CollectAddress(mCompFields->GetCc(), collectAddresses /* create card if one doesn't exist */, sendFormat); + if (addressCollecter) + addressCollecter->CollectAddress(mCompFields->GetCc(), collectAddresses /* create card if one doesn't exist */, sendFormat); } if (mCompFields->GetBcc() && *mCompFields->GetBcc()) { if (*buf2) PL_strcat (buf2, ","); PL_strcat (buf2, mCompFields->GetBcc()); - addressCollecter->CollectAddress(mCompFields->GetBcc(), collectAddresses /* create card if one doesn't exist */, sendFormat); + if (addressCollecter) + addressCollecter->CollectAddress(mCompFields->GetBcc(), collectAddresses /* create card if one doesn't exist */, sendFormat); } // We need undo groups to keep only the addresses