diff --git a/mozilla/content/xslt/src/xpath/nsXPathResult.cpp b/mozilla/content/xslt/src/xpath/nsXPathResult.cpp index 9d72866acb1..a329e083465 100644 --- a/mozilla/content/xslt/src/xpath/nsXPathResult.cpp +++ b/mozilla/content/xslt/src/xpath/nsXPathResult.cpp @@ -248,12 +248,18 @@ nsXPathResult::ContentRemoved(nsIDocument* aDocument, nsresult nsXPathResult::SetExprResult(txAExprResult* aExprResult, PRUint16 aResultType) { + mResultType = aResultType; + + if ((isSnapshot() || isIterator() || isNode()) && + aExprResult->getResultType() != txAExprResult::NODESET) { + return NS_ERROR_DOM_TYPE_ERR; + } + if (mDocument) { mDocument->RemoveObserver(this); mDocument = nsnull; } - mResultType = aResultType; mResult.set(aExprResult); if (!isIterator()) {