src/lib/VDXParser.cpp | 9 +++++---- src/lib/VSDParser.cpp | 2 +- src/lib/VSDXParser.cpp | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-)
New commits: commit 46a3a1b132333a19855b088129a79c29fc869f73 Author: David Tardon <dtar...@redhat.com> Date: Sat May 4 16:33:52 2013 +0200 coverity: make the loop end correctly The original condition, for a simple NURBS block, would try to read knots as long as there were anything to read. Because in that case flag equals 0, which is different from 0x8a, so the loop would be taken again and again, regardless of the value of repetitions. diff --git a/src/lib/VSDParser.cpp b/src/lib/VSDParser.cpp index 0f0a7d2..e9c9009 100644 --- a/src/lib/VSDParser.cpp +++ b/src/lib/VSDParser.cpp @@ -1228,7 +1228,7 @@ void libvisio::VSDParser::readNURBSTo(WPXInputStream *input) unsigned long bytesRead = input->tell() - inputPos; unsigned char flag = 0; if (paramType != 0x8a) flag = readU8(input); - while ((flag != 0x81 || (paramType == 0x8a && repetitions > 0)) && bytesRead < length) + while ((paramType == 0x8a ? repetitions > 0 : flag != 0x81) && bytesRead < length) { inputPos = input->tell(); double knot_ = 0; commit a68b8b3557527941cf6d239295834a99bca7afa5 Author: David Tardon <dtar...@redhat.com> Date: Sat May 4 16:18:01 2013 +0200 coverity: check return value of xmlTextReaderRead diff --git a/src/lib/VDXParser.cpp b/src/lib/VDXParser.cpp index e85f9a9..649cd81 100644 --- a/src/lib/VDXParser.cpp +++ b/src/lib/VDXParser.cpp @@ -212,9 +212,10 @@ void libvisio::VDXParser::processXmlNode(xmlTextReaderPtr reader) case XML_SOLUTIONXML: if (XML_READER_TYPE_ELEMENT == tokenType) { + int ret = 0; do { - xmlTextReaderRead(reader); + ret = xmlTextReaderRead(reader); #if 0 // SolutionXML inside VDX file can have invalid namespace URIs xmlResetLastError(); @@ -222,7 +223,7 @@ void libvisio::VDXParser::processXmlNode(xmlTextReaderPtr reader) tokenId = getElementToken(reader); tokenType = xmlTextReaderNodeType(reader); } - while (XML_SOLUTIONXML != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType); + while ((XML_SOLUTIONXML != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); } break; case XML_STYLESHEET: @@ -847,8 +848,8 @@ int libvisio::VDXParser::getElementDepth(xmlTextReaderPtr reader) void libvisio::VDXParser::getBinaryData(xmlTextReaderPtr reader) { - xmlTextReaderRead(reader); - if (XML_READER_TYPE_TEXT == xmlTextReaderNodeType(reader)) + const int ret = xmlTextReaderRead(reader); + if (1 == ret && XML_READER_TYPE_TEXT == xmlTextReaderNodeType(reader)) { const xmlChar *data = xmlTextReaderConstValue(reader); if (data) diff --git a/src/lib/VSDXParser.cpp b/src/lib/VSDXParser.cpp index d067d21..ad93585 100644 --- a/src/lib/VSDXParser.cpp +++ b/src/lib/VSDXParser.cpp @@ -1242,12 +1242,12 @@ void libvisio::VSDXParser::readCharacter(xmlTextReaderPtr reader) void libvisio::VSDXParser::getBinaryData(xmlTextReaderPtr reader) { - xmlTextReaderRead(reader); + const int ret = xmlTextReaderRead(reader); int tokenId = VSDXMLTokenMap::getTokenId(xmlTextReaderConstName(reader)); int tokenType = xmlTextReaderNodeType(reader); m_currentBinaryData.clear(); - if (XML_REL == tokenId && XML_READER_TYPE_ELEMENT == tokenType) + if (1 == ret && XML_REL == tokenId && XML_READER_TYPE_ELEMENT == tokenType) { xmlChar *id = xmlTextReaderGetAttribute(reader, BAD_CAST("r:id")); if (id) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits