From b93125990749a3c9bea964bdaa883dd0ed6005ab Mon Sep 17 00:00:00 2001 From: "akhil.arora%sun.com" Date: Mon, 18 Oct 1999 21:53:20 +0000 Subject: [PATCH] 16427 r=akhil.arora@sun.com fixed by Denis Sharypov Found some more instances where the DOM spec says that it is not an error to return a NULL. Do not throw exceptions in these cases. git-svn-id: svn://10.0.0.236/trunk@51035 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp | 9 +++------ mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp index 81decc82704..17669699f9d 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp @@ -294,7 +294,7 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_removeAttributeNode nsIDOMAttr* ret = nsnull; nsresult rv = element->RemoveAttributeNode(oldAttr, &ret); - if (NS_FAILED(rv)) { + if (NS_FAILED(rv) || !ret) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM && (NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR || @@ -363,9 +363,6 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_setAttribute env->ReleaseStringUTFChars(jname, name); if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; - PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, - ("Element.setAttribute: failed (%x)\n", rv)); - if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM && (NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INVALID_CHARACTER_ERR || NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR)) { @@ -403,7 +400,7 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_setAttributeNode nsIDOMAttr* ret = nsnull; nsresult rv = element->SetAttributeNode(newAttr, &ret); - if (NS_FAILED(rv)) { + if (NS_FAILED(rv) || !ret) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM && (NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR || @@ -430,7 +427,7 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_setAttributeNode return NULL; } - if (ret) ret->AddRef(); + ret->AddRef(); return jattr; } diff --git a/mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp index 58d6298aefc..48b51cafa84 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp @@ -602,11 +602,16 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getPreviousSibling nsIDOMNode* ret = nsnull; nsresult rv = node->GetPreviousSibling(&ret); - if (NS_FAILED(rv) || !ret) { + if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "Node.getPreviousSibling: failed", rv); return NULL; } + if (!ret) { + /* according to the spec, getLastChild may return NULL when there + are no children. So this is not an error */ + return NULL; + } return JavaDOMGlobals::CreateNodeSubtype(env, ret); }