diff --git a/mozilla/content/base/src/nsDocument.cpp b/mozilla/content/base/src/nsDocument.cpp index cfccb8a7b19..8fca77bf109 100644 --- a/mozilla/content/base/src/nsDocument.cpp +++ b/mozilla/content/base/src/nsDocument.cpp @@ -2109,11 +2109,12 @@ nsDocument::CreateElement(const nsAString& aTagName, nsresult rv = nsContentUtils::CheckQName(aTagName, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv); - NS_ConvertUTF16toUTF8 tmp(aTagName); - if (!IsCaseSensitive()) { - ToLowerCase(tmp); - } - nsCOMPtr name = do_GetAtom(tmp); + NS_ASSERTION(IsCaseSensitive(), + "nsDocument::CreateElement() called on document that is not " + "case sensitive. Fix caller, or fix " + "nsDocument::CreateElement()!"); + + nsCOMPtr name = do_GetAtom(aTagName); nsCOMPtr nodeInfo; rv = mNodeInfoManager->GetNodeInfo(name, nsnull, GetDefaultNamespaceID(), diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index d4f687b453a..70133ccc1ed 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -1387,7 +1387,30 @@ NS_IMETHODIMP nsHTMLDocument::CreateElement(const nsAString& aTagName, nsIDOMElement** aReturn) { - return nsDocument::CreateElement(aTagName, aReturn); + *aReturn = nsnull; + + nsresult rv = nsContentUtils::CheckQName(aTagName, PR_FALSE); + NS_ENSURE_SUCCESS(rv, rv); + + nsAutoString tmp(aTagName); + + if (!IsXHTML()) { + ToLowerCase(tmp); + } + + nsCOMPtr name = do_GetAtom(tmp); + + nsCOMPtr nodeInfo; + rv = mNodeInfoManager->GetNodeInfo(name, nsnull, mDefaultNamespaceID, + getter_AddRefs(nodeInfo)); + NS_ENSURE_SUCCESS(rv, rv); + + nsCOMPtr content; + rv = NS_CreateHTMLElement(getter_AddRefs(content), nodeInfo, IsXHTML()); + NS_ENSURE_SUCCESS(rv, rv); + content->SetContentID(mNextContentID++); + + return CallQueryInterface(content, aReturn); } NS_IMETHODIMP