From 6d3ca0cba1872145056284ffc77df6b9579fb6c4 Mon Sep 17 00:00:00 2001 From: "bienvenu%netscape.com" Date: Fri, 28 Sep 2001 23:27:52 +0000 Subject: [PATCH] fix leak of file spec rs=sspitzer 98849 --- mailnews/addrbook/src/nsAbMDBDirFactory.cpp | 32 ++++++++++++--------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/mailnews/addrbook/src/nsAbMDBDirFactory.cpp b/mailnews/addrbook/src/nsAbMDBDirFactory.cpp index 053e43fc8a82..5998e3c34da8 100644 --- a/mailnews/addrbook/src/nsAbMDBDirFactory.cpp +++ b/mailnews/addrbook/src/nsAbMDBDirFactory.cpp @@ -158,22 +158,26 @@ NS_IMETHODIMP nsAbMDBDirFactory::CreateDirectory( NS_ENSURE_SUCCESS(rv, rv); nsFileSpec* dbPath; - abSession->GetUserProfileDirectory(&dbPath); - - const char* fileName = nsnull; - const char* uri = URIUTF8.get (); - if (PL_strstr(uri, kMDBDirectoryRoot)) // for moz-abmdbdirectory:// - fileName = &(uri[PL_strlen(kMDBDirectoryRoot)]); - - nsAutoString file; - file.AssignWithConversion(fileName); - (*dbPath) += file; - - nsCOMPtr addrDBFactory = do_GetService(NS_ADDRDATABASE_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); + rv = abSession->GetUserProfileDirectory(&dbPath); nsCOMPtr listDatabase; - rv = addrDBFactory->Open(dbPath, PR_TRUE, getter_AddRefs(listDatabase), PR_TRUE); + if (dbPath) + { + const char* fileName = nsnull; + const char* uri = URIUTF8.get (); + if (PL_strstr(uri, kMDBDirectoryRoot)) // for moz-abmdbdirectory:// + fileName = &(uri[PL_strlen(kMDBDirectoryRoot)]); + + nsAutoString file; + file.AssignWithConversion(fileName); + (*dbPath) += file; + + nsCOMPtr addrDBFactory = do_GetService(NS_ADDRDATABASE_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv, rv); + + rv = addrDBFactory->Open(dbPath, PR_TRUE, getter_AddRefs(listDatabase), PR_TRUE); + delete dbPath; + } NS_ENSURE_SUCCESS(rv, rv); rv = listDatabase->GetMailingListsFromDB(directory);