diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index f6228236607..b4f69f30236 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -1230,18 +1230,24 @@ nsHTMLDocument::CreateElement(const nsAString& aTagName, *aReturn = nsnull; nsresult rv; - // if we are in quirks, don't validate the tag name - if (mCompatMode != eCompatibility_NavQuirks) { - rv = nsContentUtils::CheckQName(aTagName, PR_FALSE); - NS_ENSURE_SUCCESS(rv, rv); - } + nsAutoString tagName(aTagName); - nsAutoString tmp(aTagName); - if (!IsXHTML()) { - ToLowerCase(tmp); + // if we are in quirks, allow surrounding '<' '>' for IE compat + if (mCompatMode == eCompatibility_NavQuirks && + tagName.Length() > 2 && + tagName.First() == '<' && + tagName.Last() == '>') { + tagName = Substring(tagName, 1, tagName.Length() - 2); } - nsCOMPtr name = do_GetAtom(tmp); + rv = nsContentUtils::CheckQName(tagName, PR_FALSE); + NS_ENSURE_SUCCESS(rv, rv); + + if (!IsXHTML()) { + ToLowerCase(tagName); + } + + nsCOMPtr name = do_GetAtom(tagName); nsCOMPtr content; rv = CreateElem(name, nsnull, GetDefaultNamespaceID(), PR_TRUE,