From 9dc5f500e427dbbae5cb56ec5bc801bfec13d666 Mon Sep 17 00:00:00 2001 From: "bienvenu%nventure.com" Date: Tue, 14 Jun 2005 13:47:31 +0000 Subject: [PATCH] fix crash when editing filters after running them after the fact, sr=mscott, a=asa, 242600 git-svn-id: svn://10.0.0.236/trunk@174561 18797224-902f-48f8-a5cc-f745e15eee43 --- .../mailnews/base/search/src/nsMsgFilterList.cpp | 4 +++- mozilla/mailnews/base/search/src/nsMsgFilterList.h | 2 ++ .../base/search/src/nsMsgFilterService.cpp | 14 ++++++-------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/mozilla/mailnews/base/search/src/nsMsgFilterList.cpp b/mozilla/mailnews/base/search/src/nsMsgFilterList.cpp index 982b4b586fd..e62de4c75c5 100644 --- a/mozilla/mailnews/base/search/src/nsMsgFilterList.cpp +++ b/mozilla/mailnews/base/search/src/nsMsgFilterList.cpp @@ -73,6 +73,7 @@ nsMsgFilterList::nsMsgFilterList() : m_loggingEnabled = PR_FALSE; m_startWritingToBuffer = PR_FALSE; + m_temporaryList = PR_FALSE; m_curFilter = nsnull; m_arbitraryHeaders.SetLength(0); } @@ -963,7 +964,8 @@ nsMsgFilterList::RemoveFilter(nsIMsgFilter *aFilter) nsresult nsMsgFilterList::InsertFilterAt(PRUint32 filterIndex, nsIMsgFilter *aFilter) { nsMsgFilter *filter = NS_STATIC_CAST(nsMsgFilter *, aFilter); - filter->SetFilterList(this); + if (!m_temporaryList) + filter->SetFilterList(this); m_filters->InsertElementAt(aFilter, filterIndex); return NS_OK; } diff --git a/mozilla/mailnews/base/search/src/nsMsgFilterList.h b/mozilla/mailnews/base/search/src/nsMsgFilterList.h index 053bc049705..b83cabecae8 100644 --- a/mozilla/mailnews/base/search/src/nsMsgFilterList.h +++ b/mozilla/mailnews/base/search/src/nsMsgFilterList.h @@ -74,6 +74,8 @@ public: nsresult Close(); nsresult LoadTextFilters(nsIOFileStream *aStream); + PRBool m_temporaryList; + protected: // type-safe accessor when you really have to have an nsMsgFilter nsresult GetMsgFilterAt(PRUint32 filterIndex, nsMsgFilter **filter); diff --git a/mozilla/mailnews/base/search/src/nsMsgFilterService.cpp b/mozilla/mailnews/base/search/src/nsMsgFilterService.cpp index 8be9300912b..6d023c87881 100644 --- a/mozilla/mailnews/base/search/src/nsMsgFilterService.cpp +++ b/mozilla/mailnews/base/search/src/nsMsgFilterService.cpp @@ -716,14 +716,12 @@ nsresult nsMsgFilterAfterTheFact::ApplyFilter() NS_IMETHODIMP nsMsgFilterService::GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList **aFilterList) { NS_ENSURE_ARG_POINTER(aFilterList); - *aFilterList = new nsMsgFilterList; - if (*aFilterList) - { - (*aFilterList)->SetFolder(aFolder); - NS_ADDREF(*aFilterList); - return NS_OK; - } - return NS_ERROR_OUT_OF_MEMORY; + nsMsgFilterList *filterList = new nsMsgFilterList; + NS_ENSURE_TRUE(filterList, NS_ERROR_OUT_OF_MEMORY); + NS_ADDREF(*aFilterList = filterList); + (*aFilterList)->SetFolder(aFolder); + filterList->m_temporaryList = PR_TRUE; + return NS_OK; } NS_IMETHODIMP nsMsgFilterService::ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsISupportsArray *aFolders, nsIMsgWindow *aMsgWindow)