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,