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)