From 2242f6576c0b8fa7a1578eb2bbf6bde3c78f085e Mon Sep 17 00:00:00 2001 From: "pedemont%us.ibm.com" Date: Wed, 27 Sep 2006 15:06:25 +0000 Subject: [PATCH] Fix crash when nsJavaXPTCStub represents a non-Mozilla class object. Not part of default build. Original committer: pedemont%us.ibm.com Original revision: 1.9 Original date: 2004/10/01 23:08:34 git-svn-id: svn://10.0.0.236/trunk@212470 18797224-902f-48f8-a5cc-f745e15eee43 --- .../java/xpcom/src/nsJavaXPTCStub.cpp | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/mozilla/extensions/java/xpcom/src/nsJavaXPTCStub.cpp b/mozilla/extensions/java/xpcom/src/nsJavaXPTCStub.cpp index 04538b175f0..8ccf92de0d6 100644 --- a/mozilla/extensions/java/xpcom/src/nsJavaXPTCStub.cpp +++ b/mozilla/extensions/java/xpcom/src/nsJavaXPTCStub.cpp @@ -200,18 +200,22 @@ nsJavaXPTCStub::QueryInterface(const nsID &aIID, void **aInstancePtr) PRBool nsJavaXPTCStub::SupportsIID(const nsID &iid) { - PRBool match; - nsCOMPtr iter = mIInfo; - do - { - if (NS_SUCCEEDED(iter->IsIID(&iid, &match)) && match) - return PR_TRUE; + // Sometimes mIInfo will be null, particularly when nsJavaXPTCStub represents + // a custom (non-Mozilla) interface. + if (mIInfo) { + PRBool match; + nsCOMPtr iter = mIInfo; + do + { + if (NS_SUCCEEDED(iter->IsIID(&iid, &match)) && match) + return PR_TRUE; - nsCOMPtr parent; - iter->GetParent(getter_AddRefs(parent)); - iter = parent; + nsCOMPtr parent; + iter->GetParent(getter_AddRefs(parent)); + iter = parent; + } + while (iter != nsnull); } - while (iter != nsnull); return PR_FALSE; }