Fix bug 11511 and more "remove address book" backend

This commit is contained in:
chuang%netscape.com 1999-08-10 18:57:01 +00:00
Родитель f72125c88e
Коммит 57ac64d4d7
4 изменённых файлов: 26 добавлений и 15 удалений

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

@ -140,10 +140,9 @@ nsAbRDFDataSource::nsAbRDFDataSource():
nsAbRDFDataSource::~nsAbRDFDataSource (void)
{
mRDFService->UnregisterDataSource(this);
if (mRDFService)
{
mRDFService->UnregisterDataSource(this);
nsServiceManager::ReleaseService(kRDFServiceCID, mRDFService);
mRDFService = nsnull;
}

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

@ -66,7 +66,12 @@ nsAbCardDataSource::nsAbCardDataSource():
nsAbCardDataSource::~nsAbCardDataSource (void)
{
mRDFService->UnregisterDataSource(this);
if (mRDFService)
{
mRDFService->UnregisterDataSource(this);
nsServiceManager::ReleaseService(kRDFServiceCID, mRDFService);
mRDFService = nsnull;
}
nsresult rv = NS_OK;
NS_WITH_SERVICE(nsIAddrBookSession, abSession, kAddrBookSessionCID, &rv);
@ -82,11 +87,6 @@ nsAbCardDataSource::~nsAbCardDataSource (void)
NS_RELEASE2(kNC_Delete, refcnt);
NS_RELEASE2(kNC_NewCard, refcnt);
if (mRDFService)
{
nsServiceManager::ReleaseService(kRDFServiceCID, mRDFService);
mRDFService = nsnull;
}
}
nsresult nsAbCardDataSource::Init()

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

@ -1909,8 +1909,19 @@ nsresult DIR_DeleteServerFromList(DIR_Server *server)
if (dbPath)
{
nsCOMPtr<nsIAddrDatabase> database;
nsFileSpec prefFile = (*dbPath);
prefFile += server->fileName;
// close file before delete it
NS_WITH_SERVICE(nsIAddrDatabase, addrDBFactory, kAddressBookDBCID, &rv);
if (NS_SUCCEEDED(rv) && addrDBFactory)
rv = addrDBFactory->Open(dbPath, PR_FALSE, getter_AddRefs(database), PR_TRUE);
if (database)
database->ForceClosed();
prefFile.Delete(PR_FALSE);
nsVoidArray *dirList = DIR_GetDirectories();

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

@ -79,8 +79,14 @@ nsAbDirectoryDataSource::nsAbDirectoryDataSource():
nsAbDirectoryDataSource::~nsAbDirectoryDataSource (void)
{
mRDFService->UnregisterDataSource(this);
if (mRDFService)
{
mRDFService->UnregisterDataSource(this);
nsServiceManager::ReleaseService(kRDFServiceCID, mRDFService);
mRDFService = nsnull;
}
nsresult rv = NS_OK;
NS_WITH_SERVICE(nsIAddrBookSession, abSession, kAddrBookSessionCID, &rv);
if(NS_SUCCEEDED(rv))
@ -94,12 +100,7 @@ nsAbDirectoryDataSource::~nsAbDirectoryDataSource (void)
NS_RELEASE2(kNC_Delete, refcnt);
NS_RELEASE2(kNC_NewDirectory, refcnt);
if (mRDFService)
{
nsServiceManager::ReleaseService(kRDFServiceCID, mRDFService);
mRDFService = nsnull;
}
/* free all directories */
DIR_ShutDown();
}