diff --git a/mozilla/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp index 5bcc54524b3..ad0e15bd978 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp @@ -707,7 +707,22 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getElementsByTagName return NULL; } - return JavaDOMGlobals::CreateNodeSubtype(env, (nsIDOMNode*)elements); + jobject jret = env->AllocObject(JavaDOMGlobals::nodeListClass); + if (!jret) { + JavaDOMGlobals::ThrowException(env, + "Document.getElementsByTagNameNS: failed to allocate object"); + return NULL; + } + + env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) elements); + if (env->ExceptionOccurred()) { + JavaDOMGlobals::ThrowException(env, + "Document.getElementsByTagNameNS: failed to set node ptr"); + return NULL; + } + + elements->AddRef(); + return jret; } /* diff --git a/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp index d3df8383637..c3e852667ee 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp @@ -676,7 +676,22 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getElementsByTagNameN return NULL; } - return JavaDOMGlobals::CreateNodeSubtype(env, (nsIDOMNode*)nodes); + jobject jnodes = env->AllocObject(JavaDOMGlobals::nodeListClass); + if (!jnodes) { + JavaDOMGlobals::ThrowException(env, + "Element.getElementsByTagNameNS: failed to allocate object"); + return NULL; + } + + env->SetLongField(jnodes, JavaDOMGlobals::nodeListPtrFID, (jlong) nodes); + if (env->ExceptionOccurred()) { + JavaDOMGlobals::ThrowException(env, + "Element.getElementsByTagNameNS: failed to set node ptr"); + return NULL; + } + + nodes->AddRef(); + return jnodes; } /*