104610 r=bienvenu sr=sspitzer Make sure that mSubFolders array does not have duplicates.

This commit is contained in:
naving%netscape.com 2001-11-06 05:35:42 +00:00
Родитель 3d14e64e96
Коммит 72ddbbca6d
2 изменённых файлов: 16 добавлений и 6 удалений

Просмотреть файл

@ -309,6 +309,16 @@ NS_IMETHODIMP nsImapMailFolder::AddSubfolderWithPath(nsAutoString *name, nsIFile
if (uriStr == nsnull)
return NS_ERROR_OUT_OF_MEMORY;
//will make sure mSubFolders does not have duplicates because of bogus msf files.
nsCOMPtr <nsIMsgFolder> msgFolder;
rv = GetChildWithURI(uriStr, PR_FALSE/*deep*/, PR_FALSE /*case Insensitive*/, getter_AddRefs(msgFolder));
if (NS_SUCCEEDED(rv) && msgFolder)
{
nsMemory::Free(uriStr);
return NS_MSG_FOLDER_EXISTS;
}
nsCOMPtr<nsIRDFResource> res;
rv = rdf->GetResource(uriStr, getter_AddRefs(res));
if (NS_FAILED(rv))

Просмотреть файл

@ -267,6 +267,11 @@ NS_IMETHODIMP nsMsgLocalMailFolder::AddSubfolder(nsAutoString *name,
NS_ENSURE_SUCCESS(rv,rv);
uri.Append(escapedName.get());
nsCOMPtr <nsIMsgFolder> msgFolder;
rv = GetChildWithURI(uri.get(), PR_FALSE/*deep*/, PR_TRUE /*case Insensitive*/, getter_AddRefs(msgFolder));
if (NS_SUCCEEDED(rv) && msgFolder)
return NS_MSG_FOLDER_EXISTS;
nsCOMPtr<nsIRDFResource> res;
rv = rdf->GetResource(uri.get(), getter_AddRefs(res));
if (NS_FAILED(rv))
@ -434,8 +439,7 @@ nsMsgLocalMailFolder::GetSubFolders(nsIEnumerator* *result)
if (!path.IsDirectory())
AddDirectorySeparator(path);
if(NS_FAILED(rv)) return rv;
mInitialized = PR_TRUE; // need to set this flag here to avoid infinite recursion
// we have to treat the root folder specially, because it's name
// doesn't end with .sbd
PRInt32 newFlags = MSG_FOLDER_FLAG_MAIL;
@ -481,12 +485,8 @@ nsMsgLocalMailFolder::GetSubFolders(nsIEnumerator* *result)
rv = localMailServer->SetFlagsOnDefaultMailboxes();
if (NS_FAILED(rv)) return rv;
}
}
UpdateSummaryTotals(PR_FALSE);
if (NS_FAILED(rv)) return rv;
mInitialized = PR_TRUE; // XXX do this on failure too?
}
rv = mSubFolders->Enumerate(result);
return rv;