dbertoni 01/09/14 08:38:29
Modified: c/src/XMLSupport FormatterToHTML.cpp FormatterToHTML.hpp
Log:
Fix for bug 3583.
Revision Changes Path
1.61 +32 -6 xml-xalan/c/src/XMLSupport/FormatterToHTML.cpp
Index: FormatterToHTML.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToHTML.cpp,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- FormatterToHTML.cpp 2001/08/14 16:22:01 1.60
+++ FormatterToHTML.cpp 2001/09/14 15:38:29 1.61
@@ -67,8 +67,7 @@
#include <cassert>
-//#include <climits>
-#include <map>
+//#include <map>
@@ -120,6 +119,7 @@
m_inBlockElem(false),
m_isRawStack(),
m_isScriptOrStyleElem(false),
+ m_inScriptElemStack(),
m_escapeURLs(true),
m_isFirstElement(false),
m_isUTF8(XalanTranscodingServices::encodingIsUTF8(m_encoding)),
@@ -216,7 +216,12 @@
m_isFirstElement = true;
m_startNewLine = false;
m_shouldWriteXMLHeader = false;
+ m_isScriptOrStyleElem = false;
+ m_isRawStack.clear();
+ m_inScriptElemStack.push_back(false);
+ m_hasNamespaceStack.clear();
+
const bool isEmptySystem = isEmpty(m_doctypeSystem);
const bool isEmptyPublic = isEmpty(m_doctypePublic);
@@ -263,6 +268,8 @@
{
assert(m_elementLevel == 0);
+ m_inScriptElemStack.pop_back();
+
FormatterToXML::endDocument();
}
@@ -279,7 +286,6 @@
}
else
{
-
writeParentTagEnd();
const ElemDesc& elemDesc =
@@ -287,10 +293,22 @@
const bool isBlockElement = elemDesc.is(ElemDesc::BLOCK);
- m_isScriptOrStyleElem =
- equalsIgnoreCaseASCII(name,
c_wstr(s_scriptString)) ||
- equalsIgnoreCaseASCII(name,
c_wstr(s_styleString));
+ if (equalsIgnoreCaseASCII(name, c_wstr(s_scriptString)) == true)
+ {
+ m_isScriptOrStyleElem = true;
+ m_inScriptElemStack.push_back(true);
+ }
+ else
+ {
+ if (equalsIgnoreCaseASCII(name, c_wstr(s_styleString))
== true)
+ {
+ m_isScriptOrStyleElem = true;
+ }
+
+
m_inScriptElemStack.push_back(m_inScriptElemStack.back());
+ }
+
// Increment the level...
++m_elementLevel;
@@ -367,7 +385,11 @@
const bool hasChildNodes = childNodesWereAdded();
+ assert(m_isRawStack.empty() == false);
+ assert(m_inScriptElemStack.empty() == false);
+
m_isRawStack.pop_back();
+ m_inScriptElemStack.pop_back();
const ElemDesc& elemDesc =
getElemDesc(name);
@@ -455,6 +477,10 @@
{
m_nextIsRaw = false;
+ charactersRaw(chars, length);
+ }
+ else if (m_inScriptElemStack.back() == true)
+ {
charactersRaw(chars, length);
}
else if (m_isRawStack.empty() == false &&
1.27 +3 -1 xml-xalan/c/src/XMLSupport/FormatterToHTML.hpp
Index: FormatterToHTML.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToHTML.hpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- FormatterToHTML.hpp 2001/07/08 18:16:13 1.26
+++ FormatterToHTML.hpp 2001/09/14 15:38:29 1.27
@@ -58,7 +58,7 @@
#define FORMATTERTOHTML_HEADER_GUARD_1357924680
/**
- * $Id: FormatterToHTML.hpp,v 1.26 2001/07/08 18:16:13 dbertoni Exp $
+ * $Id: FormatterToHTML.hpp,v 1.27 2001/09/14 15:38:29 dbertoni Exp $
*
* $State: Exp $
*
@@ -443,6 +443,8 @@
BoolStackType m_isRawStack;
bool m_isScriptOrStyleElem;
+
+ BoolStackType m_inScriptElemStack;
bool m_escapeURLs;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]