diff --git a/dom/base/nsDocumentEncoder.cpp b/dom/base/nsDocumentEncoder.cpp index 7ea49009b4..0cbcc66d56 100644 --- a/dom/base/nsDocumentEncoder.cpp +++ b/dom/base/nsDocumentEncoder.cpp @@ -1027,6 +1027,15 @@ nsDocumentEncoder::EncodeToString(nsAString& aOutputString) return EncodeToStringWithMaxLength(0, aOutputString); } +static bool ParentIsTR(nsIContent* aContent) { + mozilla::dom::Element* parent = aContent->GetParentElement(); + if (!parent) { + return false; + } + return parent->IsHTML(nsGkAtoms::tr); +} + + NS_IMETHODIMP nsDocumentEncoder::EncodeToStringWithMaxLength(uint32_t aMaxLength, nsAString& aOutputString) @@ -1093,7 +1102,7 @@ nsDocumentEncoder::EncodeToStringWithMaxLength(uint32_t aMaxLength, NS_ENSURE_SUCCESS(rv, rv); } nsCOMPtr content = do_QueryInterface(node); - if (content && content->IsHTML(nsGkAtoms::tr)) { + if (content && content->IsHTML(nsGkAtoms::tr) && !ParentIsTR(content)) { nsINode* n = content; if (!prevNode) { // Went from a non- to a