summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-06-02 20:14:16 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-06-02 22:19:18 +0200
commitb7b3035ff14ba78ee193a0d5e83c9b028bf06b84 (patch)
tree66fd72d0de3d0a4f5be7d6646b564ebef7f65e02 /writerfilter
parentc553b1fdca31c34f7d9dc7f9bedb8d094c374567 (diff)
fdo#79384 RTF import: allow { without } in style names
This is not valid, but LO 3.4 supported it, so add a workaround... (cherry picked from commit 6092e2eba3f74c9632f7862b2368b0fcf7732f85) Change-Id: Ib8eefdf41fe9801db6f7e5873eaa1436518912fb
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx7
1 files changed, 6 insertions, 1 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index d66b668e7f74..686901483b6a 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -956,7 +956,12 @@ int RTFDocumentImpl::resolveChars(char ch)
bool bUnicodeChecked = false;
bool bSkipped = false;
- while (!Strm().IsEof() && (m_aStates.top().nInternalState == INTERNAL_HEX || (ch != '{' && ch != '}' && ch != '\\')))
+
+ // Workaround for buggy input: if we're inside a style entry, then ignore
+ // the fact that '{' without a matching '}' is invalid.
+ bool bStyleEntry = m_aStates.top().nDestinationState == DESTINATION_STYLEENTRY;
+
+ while (!Strm().IsEof() && (m_aStates.top().nInternalState == INTERNAL_HEX || ((ch != '{' || bStyleEntry) && ch != '}' && ch != '\\')))
{
if (m_aStates.top().nInternalState == INTERNAL_HEX || (ch != 0x0d && ch != 0x0a))
{