src/lib/VSDContentCollector.cpp | 7 +++-- src/lib/VSDParser.cpp | 5 ++- src/lib/VisioDocument.cpp | 51 +++++++++++++++++++++++++++++----------- 3 files changed, 44 insertions(+), 19 deletions(-)
New commits: commit 89c2cd56fd2bd6c2c944c0dbd5e05058acc6e706 Author: Fridrich Å trba <[email protected]> Date: Fri Mar 15 13:44:12 2013 +0100 Small cleanup diff --git a/src/lib/VisioDocument.cpp b/src/lib/VisioDocument.cpp index ad9ebd6..bbfe53f 100644 --- a/src/lib/VisioDocument.cpp +++ b/src/lib/VisioDocument.cpp @@ -372,13 +372,13 @@ bool libvisio::VisioDocument::parse(::WPXInputStream *input, libwpg::WPGPaintInt return true; return false; } - else if (isOpcVisioDocument(input)) + if (isOpcVisioDocument(input)) { if (parseOpcVisioDocument(input, painter, false)) return true; return false; } - else if (isXmlVisioDocument(input)) + if (isXmlVisioDocument(input)) { if (parseXmlVisioDocument(input, painter, false)) return true; @@ -403,13 +403,13 @@ bool libvisio::VisioDocument::parseStencils(::WPXInputStream *input, libwpg::WPG return true; return false; } - else if (isOpcVisioDocument(input)) + if (isOpcVisioDocument(input)) { if (parseOpcVisioDocument(input, painter, true)) return true; return false; } - else if (isXmlVisioDocument(input)) + if (isXmlVisioDocument(input)) { if (parseXmlVisioDocument(input, painter, true)) return true; commit 624c6b7e3603f9db5e649030e75d2943da97bc1b Author: Fridrich Å trba <[email protected]> Date: Fri Mar 15 12:33:27 2013 +0100 Clear the text if we were not able to read it diff --git a/src/lib/VSDParser.cpp b/src/lib/VSDParser.cpp index 605f102..cd7b307 100644 --- a/src/lib/VSDParser.cpp +++ b/src/lib/VSDParser.cpp @@ -1637,9 +1637,10 @@ void libvisio::VSDParser::readText(WPXInputStream *input) } textStream.append(tmpBuffer, numBytesRead); m_shape.m_text = textStream; - m_shape.m_textFormat = libvisio::VSD_TEXT_UTF16; } - + else + m_shape.m_text.clear(); + m_shape.m_textFormat = libvisio::VSD_TEXT_UTF16; } void libvisio::VSDParser::readCharIX(WPXInputStream *input) diff --git a/src/lib/VisioDocument.cpp b/src/lib/VisioDocument.cpp index 03f0a8d..ad9ebd6 100644 --- a/src/lib/VisioDocument.cpp +++ b/src/lib/VisioDocument.cpp @@ -366,14 +366,25 @@ WPGPaintInterface class implementation when needed. This is often commonly calle */ bool libvisio::VisioDocument::parse(::WPXInputStream *input, libwpg::WPGPaintInterface *painter) { - if (isBinaryVisioDocument(input) && parseBinaryVisioDocument(input, painter, false)) - return true; - else if (isOpcVisioDocument(input) && parseOpcVisioDocument(input, painter, false)) - return true; - else if (isXmlVisioDocument(input) && parseXmlVisioDocument(input, painter, false)) - return true; - else + if (isBinaryVisioDocument(input)) + { + if (parseBinaryVisioDocument(input, painter, false)) + return true; return false; + } + else if (isOpcVisioDocument(input)) + { + if (parseOpcVisioDocument(input, painter, false)) + return true; + return false; + } + else if (isXmlVisioDocument(input)) + { + if (parseXmlVisioDocument(input, painter, false)) + return true; + return false; + } + return false; } /** @@ -386,16 +397,28 @@ when needed. */ bool libvisio::VisioDocument::parseStencils(::WPXInputStream *input, libwpg::WPGPaintInterface *painter) { - if (isBinaryVisioDocument(input) && parseBinaryVisioDocument(input, painter, true)) - return true; - else if (isOpcVisioDocument(input) && parseOpcVisioDocument(input, painter, true)) - return true; - else if (isXmlVisioDocument(input) && parseXmlVisioDocument(input, painter, true)) - return true; - else + if (isBinaryVisioDocument(input)) + { + if (parseBinaryVisioDocument(input, painter, true)) + return true; + return false; + } + else if (isOpcVisioDocument(input)) + { + if (parseOpcVisioDocument(input, painter, true)) + return true; + return false; + } + else if (isXmlVisioDocument(input)) + { + if (parseXmlVisioDocument(input, painter, true)) + return true; return false; + } + return false; } + /** Parses the input stream content and generates a valid Scalable Vector Graphics Provided as a convenience function for applications that support SVG internally. commit fc18442c6f3a00fa4271dd61f71f5403278935ec Author: Fridrich Å trba <[email protected]> Date: Fri Mar 15 12:33:04 2013 +0100 Don't fail just because at the end of a string diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index 6b67ae0..14bc55d 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -2920,10 +2920,8 @@ void libvisio::VSDContentCollector::appendCharacters(WPXString &text, const std: while (true) { if (iter == characters.end()) - { - fail = true; break; - } + uint16_t character = *iter++; character |= (uint16_t)(*iter++) << 8; if (character == 0xfffc) @@ -2965,7 +2963,10 @@ void libvisio::VSDContentCollector::appendCharacters(WPXString &text, const std: } } if (fail) + { + VSD_DEBUG_MSG(("Throwing GenericException\n")); throw libvisio::GenericException(); + } if (ucs4Character == 0xa) _appendUCS4(text, (uint32_t)'\n');
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
