bug 368811 xpinstall shutdown crash when EM dialog left open. r/sr=jst

git-svn-id: svn://10.0.0.236/trunk@237625 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
dveditz%cruzio.com 2007-10-11 23:04:39 +00:00
parent 3c0bf67b74
commit 5e5fc0f6d3
2 changed files with 9 additions and 4 deletions

View File

@ -323,7 +323,7 @@ void nsXPITriggerInfo::SendStatus(const PRUnichar* URL, PRInt32 status)
{
nsresult rv;
if ( mCx && mGlobalWrapper && mCbval )
if ( mCx && mGlobalWrapper && !JSVAL_IS_NULL(mCbval) )
{
// create event and post it
nsRefPtr<XPITriggerEvent> event = new XPITriggerEvent();

View File

@ -126,8 +126,7 @@ nsXPInstallManager::nsXPInstallManager()
nsXPInstallManager::~nsXPInstallManager()
{
if (mTriggers)
delete mTriggers;
NS_ASSERTION(!mTriggers, "Shutdown not called, triggers still alive");
}
@ -248,9 +247,9 @@ nsXPInstallManager::InitManager(nsIDOMWindowInternal* aParentWindow, nsXPITrigge
nsresult rv = NS_OK;
mNeedsShutdown = PR_TRUE;
mTriggers = aTriggers;
mChromeType = aChromeType;
mNeedsShutdown = PR_TRUE;
mParentWindow = aParentWindow;
@ -916,6 +915,12 @@ void nsXPInstallManager::Shutdown()
pos->RemoveObserver(this, XPI_PROGRESS_TOPIC);
}
if (mTriggers)
{
delete mTriggers;
mTriggers = nsnull;
}
NS_RELEASE_THIS();
}
}