sw/qa/core/data/rtf/pass/fdo79384.rtf          |    5 +++++
 writerfilter/source/rtftok/rtfdocumentimpl.cxx |    7 ++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

New commits:
commit 6092e2eba3f74c9632f7862b2368b0fcf7732f85
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Mon Jun 2 20:14:16 2014 +0200

    fdo#79384 RTF import: allow { without } in style names
    
    This is not valid, but LO 3.4 supported it, so add a workaround...
    
    Change-Id: Ib8eefdf41fe9801db6f7e5873eaa1436518912fb

diff --git a/sw/qa/core/data/rtf/pass/fdo79384.rtf 
b/sw/qa/core/data/rtf/pass/fdo79384.rtf
new file mode 100644
index 0000000..84875a9
--- /dev/null
+++ b/sw/qa/core/data/rtf/pass/fdo79384.rtf
@@ -0,0 +1,5 @@
+{\rtf1
+{\stylesheet
+{\*\cs35\snext35\hich\af5\dbch\af5\loch\f5 „M„p„‚„{„u„‚„ „ƒ„„y„ƒ„{„p;}
+}
+\par }
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx 
b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index cc99fbc..079f43e 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))
         {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to