summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2017-04-07 22:29:15 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-04-10 16:22:53 +0200
commitfd93d09a5b6226a8297b5dd995301d514ec7b8ca (patch)
tree00bdf1677bbc404cc604de07f28229c4892f28dc
parent644aacd1e4b419f2f85b6c2e18026ca04206b378 (diff)
tdf#106692 writerfilter: RTF import: fix \'0d in \leveltext
It's not a newline but yet another one of those bizarre RTF-encodings. (regression from 10e733908038407791f9c14af2a86417cc4a653c) Change-Id: I568050b031b95ac0b6ebfa1a0c39107e62f68bed (cherry picked from commit 69b7204164945cfed385d58e64592ce1b17937d7) Reviewed-on: https://gerrit.libreoffice.org/36284 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--sw/qa/extras/rtfimport/data/hexcrlf.rtf6
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx6
2 files changed, 10 insertions, 2 deletions
diff --git a/sw/qa/extras/rtfimport/data/hexcrlf.rtf b/sw/qa/extras/rtfimport/data/hexcrlf.rtf
index 7c7ed1a9b5f8..1aaa0839c7eb 100644
--- a/sw/qa/extras/rtfimport/data/hexcrlf.rtf
+++ b/sw/qa/extras/rtfimport/data/hexcrlf.rtf
@@ -1,4 +1,10 @@
{\rtf1
+{\*\listtable
+{\list\listtemplateid1
+{\listlevel{\leveltext \'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'0b\'0d}}
+{\listname Heading;}\listid1199164
+}}
+
foo\'0dba
r\'0abaz\'0d\'0aquux
\par }
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 07ecb5fd5c2c..e1932c050847 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -1116,8 +1116,10 @@ RTFError RTFDocumentImpl::resolveChars(char ch)
if (!bSkipped)
{
// note: apparently \'0d\'0a is interpreted as 2 breaks, not 1
- if (m_aStates.top().eDestination != Destination::DOCCOMM
- && (ch == '\r' || ch == '\n'))
+ if ((ch == '\r' || ch == '\n')
+ && m_aStates.top().eDestination != Destination::DOCCOMM
+ && m_aStates.top().eDestination != Destination::LEVELNUMBERS
+ && m_aStates.top().eDestination != Destination::LEVELTEXT)
{
checkUnicode(/*bUnicode =*/ false, /*bHex =*/ true);
dispatchSymbol(RTF_PAR);