summaryrefslogtreecommitdiff
path: root/writerfilter/source
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2017-02-23 15:33:55 +0100
committerMichael Stahl <mstahl@redhat.com>2017-02-23 16:42:38 +0100
commit10e733908038407791f9c14af2a86417cc4a653c (patch)
tree62c3c794739912b642b5adfbdbed2be00176a4ec /writerfilter/source
parent78e25558e86188314b9b72048b8ddca18697cb86 (diff)
writerfilter: RTF import: hex-escaped \r and \n create paragraph break
... in Word 2010, while the spec doesn't say what they do. So just handle \'0d and \'0a like \par. This fixes an assert failure on importing lp556169-2.rtf, where insertTextPortion was called with a string containing "\r", which split the paragraph and that messed up the SwPaM. Change-Id: Iee8b5b47e15d18232de841adfbc9c6498727c384
Diffstat (limited to 'writerfilter/source')
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx14
1 files changed, 13 insertions, 1 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index a42b52833ab0..ef5e0868d1ef 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -1120,7 +1120,19 @@ RTFError RTFDocumentImpl::resolveChars(char ch)
if (m_aStates.top().nInternalState == RTFInternalState::HEX && m_aStates.top().eDestination != Destination::LEVELNUMBERS)
{
if (!bSkipped)
- m_aHexBuffer.append(ch);
+ {
+ // note: apparently \'0d\'0a is interpreted as 2 breaks, not 1
+ if (m_aStates.top().eDestination != Destination::DOCCOMM
+ && (ch == '\r' || ch == '\n'))
+ {
+ checkUnicode(/*bUnicode =*/ false, /*bHex =*/ true);
+ dispatchSymbol(RTF_PAR);
+ }
+ else
+ {
+ m_aHexBuffer.append(ch);
+ }
+ }
return RTFError::OK;
}