summaryrefslogtreecommitdiff
path: root/sax
diff options
context:
space:
mode:
authorMark Hung <marklh9@gmail.com>2016-01-10 00:28:14 +0800
committerMichael Stahl <mstahl@redhat.com>2016-01-12 16:08:36 +0000
commit7ec5ba47783ac8b2d0141109d0efe6b20b363ced (patch)
treebb4735b2f6c276251f92e5647dc78a6f24235ab0 /sax
parentcbc0c1b64bff517b27104c6335d45fb59a884931 (diff)
Fix FastSaxSerializer::write() for non-BMP unicode characters.
Change-Id: I6ee9d028813c970b9ac5b9f0574af932e73111bd Reviewed-on: https://gerrit.libreoffice.org/21293 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sax')
-rw-r--r--sax/source/tools/fastserializer.cxx25
1 files changed, 2 insertions, 23 deletions
diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx
index 37ed847c6066..8437ff0284e4 100644
--- a/sax/source/tools/fastserializer.cxx
+++ b/sax/source/tools/fastserializer.cxx
@@ -94,29 +94,8 @@ namespace sax_fastparser {
void FastSaxSerializer::write( const OUString& sOutput, bool bEscape )
{
- const sal_Int32 nLength = sOutput.getLength();
- for (sal_Int32 i = 0; i < nLength; ++i)
- {
- const sal_Unicode cUnicode = sOutput[ i ];
- const char cChar = cUnicode;
- if (cUnicode & 0xff80)
- {
- write( OString(&cUnicode, 1, RTL_TEXTENCODING_UTF8) );
- }
- else if(bEscape) switch( cChar )
- {
- case '<': writeBytes( "&lt;", 4 ); break;
- case '>': writeBytes( "&gt;", 4 ); break;
- case '&': writeBytes( "&amp;", 5 ); break;
- case '\'': writeBytes( "&apos;", 6 ); break;
- case '"': writeBytes( "&quot;", 6 ); break;
- case '\n': writeBytes( "&#10;", 5 ); break;
- case '\r': writeBytes( "&#13;", 5 ); break;
- default: writeBytes( &cChar, 1 ); break;
- }
- else
- writeBytes( &cChar, 1 );
- }
+ write( sOutput.toUtf8(), bEscape );
+
}
void FastSaxSerializer::write( const OString& sOutput, bool bEscape )