Fix memory leaks. Make JavaXPCOMInstance hold ref to XPCOM object.

Original committer: pedemont%us.ibm.com
Original revision: 1.11
Original date: 2004/10/27 17:10:03


git-svn-id: svn://10.0.0.236/trunk@212672 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pedemont%us.ibm.com
2006-09-27 15:18:36 +00:00
parent 1b5620e2e8
commit 125b52b50e

View File

@@ -42,6 +42,8 @@
#include "nsIInterfaceInfoManager.h"
#include "pldhash.h"
#include "nsILocalFile.h"
#include "nsEventQueueUtils.h"
#include "nsProxyRelease.h"
#ifdef DEBUG
@@ -507,6 +509,23 @@ FreeJavaGlobals(JNIEnv* env)
/**********************************************************
* JavaXPCOMInstance
*********************************************************/
JavaXPCOMInstance::JavaXPCOMInstance(nsISupports* aInstance,
nsIInterfaceInfo* aIInfo)
: mInstance(aInstance),
mIInfo(aIInfo)
{
NS_ADDREF(mInstance);
}
JavaXPCOMInstance::~JavaXPCOMInstance()
{
nsCOMPtr<nsIEventQueue> eventQ;
nsresult rv = NS_GetMainEventQ(getter_AddRefs(eventQ));
if (NS_SUCCEEDED(rv))
rv = NS_ProxyRelease(eventQ, mInstance);
NS_ASSERTION(NS_SUCCEEDED(rv), "Failed to get MainEventQ");
}
nsIInterfaceInfo*
JavaXPCOMInstance::InterfaceInfo()
{
@@ -548,7 +567,6 @@ CreateJavaXPCOMInstance(nsISupports* aXPCOMObject, const nsIID* aIID)
inst = new JavaXPCOMInstance(aXPCOMObject, info);
}
}
NS_ADDREF(aXPCOMObject);
return inst;
}