QI, don't case! Not part of default build.

This commit is contained in:
pedemont%us.ibm.com 2004-09-15 19:47:19 +00:00
Родитель bcb7ebfb53
Коммит 0df3031dd8
4 изменённых файлов: 12 добавлений и 9 удалений

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

@ -182,7 +182,8 @@ XPCOM_NATIVE(NS_1NewSingletonEnumerator) (JNIEnv *env, jclass, jobject aSingleto
nsISupports* singleton;
if (IsXPTCStub(inst))
singleton = (nsISupports*) GetXPTCStubAddr(inst);
GetXPTCStubAddr(inst)->QueryInterface(NS_GET_IID(nsISupports),
(void**) &singleton);
else {
JavaXPCOMInstance* xpcomInst = (JavaXPCOMInstance*) inst;
singleton = xpcomInst->GetInstance();

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

@ -175,17 +175,19 @@ RemoveXPCOMBinding(JNIEnv* env, jobject aJavaObject)
LOG("- Removing Java<->XPCOM binding (Java=0x%08x | XPCOM=0x%08x)\n",
hash, (int) xpcomObj);
nsISupports* inst = nsnull;
if (IsXPTCStub(xpcomObj)) {
return (nsISupports*) GetXPTCStubAddr(xpcomObj);
GetXPTCStubAddr(xpcomObj)->QueryInterface(NS_GET_IID(nsISupports),
(void**) &inst);
} else {
JavaXPCOMInstance* xpcomInst = (JavaXPCOMInstance*) xpcomObj;
nsISupports* inst = xpcomInst->GetInstance();
inst = xpcomInst->GetInstance();
// XXX Getting some odd thread issues when calling this. Addreffing for
// now to work around the errors.
NS_ADDREF(inst);
delete xpcomInst;
return inst;
}
return inst;
}
void

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

@ -45,7 +45,7 @@
#ifdef DEBUG_pedemonte
#define LOG(...) printf(__VA_ARGS__)
#else
#define LOG(format, ...)
#define LOG(...) /* nothing */
#endif

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

@ -101,12 +101,12 @@ private:
inline void* SetAsXPTCStub(nsJavaXPTCStub* ptr)
{ NS_PRECONDITION(ptr, "null pointer");
return (void*) (((unsigned long) ptr) | 0x1); }
inline PRBool IsXPTCStub(void* ptr)
inline PRBool IsXPTCStub(void* ptr)
{ NS_PRECONDITION(ptr, "null pointer");
return ((unsigned long) ptr) & 0x1; }
inline nsJavaXPTCStub* GetXPTCStubAddr(void* ptr)
inline nsJavaXPTCStub* GetXPTCStubAddr(void* ptr)
{ NS_PRECONDITION(ptr, "null pointer");
return (nsJavaXPTCStub*) (((unsigned long) ptr) & ~0x1); }