summaryrefslogtreecommitdiffstats
path: root/src/xmlgen.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2014-08-15 09:19:55 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2014-08-15 09:19:55 (GMT)
commitb272b4b5077873457a0f6b517ac799f4a5f8c951 (patch)
treebf707b24a4a6d2b2542319349dd7df06ccd58074 /src/xmlgen.cpp
parent392b48a25e4315528fbb11a5a1bfc9f2bca791c0 (diff)
downloadDoxygen-b272b4b5077873457a0f6b517ac799f4a5f8c951.zip
Doxygen-b272b4b5077873457a0f6b517ac799f4a5f8c951.tar.gz
Doxygen-b272b4b5077873457a0f6b517ac799f4a5f8c951.tar.bz2
Bug 733722 - XML Output invalid: XML_PROGRAMLISTING=YES copies Unicode form feed character (U+000C) to XML files
Diffstat (limited to 'src/xmlgen.cpp')
-rw-r--r--src/xmlgen.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index c9fe950..549ff0f 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -129,10 +129,10 @@ inline void writeXMLCodeString(FTextStream &t,const char *s, int &col)
{
switch(c)
{
- case '\t':
- {
+ case '\t':
+ {
static int tabSize = Config_getInt("TAB_SIZE");
- int spacesToNextTabStop = tabSize - (col%tabSize);
+ int spacesToNextTabStop = tabSize - (col%tabSize);
col+=spacesToNextTabStop;
while (spacesToNextTabStop--) t << "<sp/>";
break;
@@ -141,11 +141,16 @@ inline void writeXMLCodeString(FTextStream &t,const char *s, int &col)
case '<': t << "&lt;"; col++; break;
case '>': t << "&gt;"; col++; break;
case '&': t << "&amp;"; col++; break;
- case '\'': t << "&apos;"; col++; break;
+ case '\'': t << "&apos;"; col++; break;
case '"': t << "&quot;"; col++; break;
- default: s=writeUtf8Char(t,s-1); col++; break;
+ case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
+ case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18:
+ case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26:
+ case 27: case 28: case 29: case 30: case 31:
+ break; // skip invalid XML characters (see http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char)
+ default: s=writeUtf8Char(t,s-1); col++; break;
}
- }
+ }
}