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);