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 Mp{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