diff --git a/content/xslt/src/xslt/txHTMLOutput.cpp b/content/xslt/src/xslt/txHTMLOutput.cpp index c1fa24694883..ded0a3a85fab 100644 --- a/content/xslt/src/xslt/txHTMLOutput.cpp +++ b/content/xslt/src/xslt/txHTMLOutput.cpp @@ -286,9 +286,7 @@ MBool txHTMLOutput::isShorthandAttribute(const String& aLocalName) if (mHTMLEmptyAttributes[k].mElementList.IndexOf(currentElement->mLocalName) > -1) { return MB_TRUE; } - else { - return MB_FALSE; - } + return MB_FALSE; } } return MB_FALSE; diff --git a/content/xslt/src/xslt/txHTMLOutput.h b/content/xslt/src/xslt/txHTMLOutput.h index ebdc476c5786..5ad8c3624304 100644 --- a/content/xslt/src/xslt/txHTMLOutput.h +++ b/content/xslt/src/xslt/txHTMLOutput.h @@ -42,6 +42,10 @@ #include "txXMLOutput.h" #include "Map.h" #include "Stack.h" +#include "nsCOMArray.h" + +#define SHORTHAND_ATTR_COUNT 12 +#define EMPTY_ELEMENTS_COUNT 13 class txHTMLOutput : public txXMLOutput { @@ -104,8 +108,12 @@ private: MBool isShorthandElement(const String& aName); MBool isShorthandAttribute(const String& aLocalName); - Map mHTMLEmptyTags; - Map mHTMLEmptyAttributes; + nsCOMArray mHTMLEmptyTags; + struct EmptyAttrBag { + nsCOMPtr mAttrName; + nsCOMArray mElementList; + }; + EmptyAttrBag mHTMLEmptyAttributes[SHORTHAND_ATTR_COUNT]; Stack mCurrentElements; }; diff --git a/content/xslt/src/xslt/txXMLOutput.cpp b/content/xslt/src/xslt/txXMLOutput.cpp index 852632a288d5..cb2f808f0bab 100644 --- a/content/xslt/src/xslt/txXMLOutput.cpp +++ b/content/xslt/src/xslt/txXMLOutput.cpp @@ -263,7 +263,10 @@ void txXMLOutput::closeStartTag(MBool aUseEmptyElementShorthand) txAttribute* att; while ((att = (txAttribute*)iter.next())) { *mOut << SPACE; - *mOut << *(att->mName.mLocalName); + const PRUnichar* attrVal; + att->mName.mLocalName->GetUnicode(&attrVal); + // XXX consult the XML spec what we really wanna do here + *mOut << NS_ConvertUCS2toUTF8(nsDependentString(attrVal)).get(); if (!att->mShorthand) { *mOut << EQUALS << DOUBLE_QUOTE; printWithXMLEntities(att->mValue, MB_TRUE);