src/lib/VSDParser.cpp | 14 +------------- src/lib/VSDParser.h | 4 ---- 2 files changed, 1 insertion(+), 17 deletions(-)
New commits: commit 25a2ba5fc9551f736192c3cca092aad69a98db09 Author: David Tardon <[email protected]> Date: Fri Dec 5 08:50:10 2014 +0100 Revert "avoid infinite recursion when reading a broken file" Streams can legitimately be read more than once. (In ideal world, we would keep the parsed data and just reuse it if/when the same stream pointer was encountered again, instead of parsing it repeatedly. There is a room for future improvement there :-) This reverts commit 770e649b1b30e2b43e62d00ed06b4ff33f8305e0. diff --git a/src/lib/VSDParser.cpp b/src/lib/VSDParser.cpp index 65702b4..388e84d 100644 --- a/src/lib/VSDParser.cpp +++ b/src/lib/VSDParser.cpp @@ -27,7 +27,7 @@ libvisio::VSDParser::VSDParser(librevenge::RVNGInputStream *input, librevenge::R m_currentShapeLevel(0), m_currentShapeID(MINUS_ONE), m_extractStencils(false), m_colours(), m_isBackgroundPage(false), m_isShapeStarted(false), m_shadowOffsetX(0.0), m_shadowOffsetY(0.0), m_currentGeometryList(0), m_currentGeomListCount(0), m_fonts(), m_names(), m_namesMapMap(), - m_currentPageName(), m_handledStreams() + m_currentPageName() {} libvisio::VSDParser::~VSDParser() @@ -113,7 +113,6 @@ bool libvisio::VSDParser::parseMain() Pointer trailerPointer; readPointer(m_input, trailerPointer); - m_handledStreams.insert(trailerPointer.Offset); bool compressed = ((trailerPointer.Format & 2) == 2); unsigned shift = 0; if (compressed) @@ -133,8 +132,6 @@ bool libvisio::VSDParser::parseMain() return false; _handleLevelChange(0); - m_handledStreams.clear(); - m_handledStreams.insert(trailerPointer.Offset); VSDStyles styles = stylesCollector.getStyleSheets(); @@ -232,15 +229,6 @@ void libvisio::VSDParser::handleStreams(librevenge::RVNGInputStream *input, unsi if (ptr.Type == 0) continue; - std::set<unsigned>::iterator it = m_handledStreams.find(ptr.Offset); - if (it != m_handledStreams.end()) - { - VSD_DEBUG_MSG(("Stream at offset %d has already been handled. Skipping...\n", ptr.Offset)); - continue; - } - - m_handledStreams.insert(it, ptr.Offset); - if (ptr.Type == VSD_FONTFACES) FontFaces[i] = ptr; else if (ptr.Type == VSD_NAME_LIST2) diff --git a/src/lib/VSDParser.h b/src/lib/VSDParser.h index e8da164..2df8547 100644 --- a/src/lib/VSDParser.h +++ b/src/lib/VSDParser.h @@ -12,7 +12,6 @@ #include <stdio.h> #include <iostream> -#include <set> #include <vector> #include <stack> #include <map> @@ -168,9 +167,6 @@ protected: std::map<unsigned, std::map<unsigned, VSDName> > m_namesMapMap; VSDName m_currentPageName; - // Sanity check, to avoid problems with broken files. - std::set<unsigned> m_handledStreams; - private: VSDParser(); VSDParser(const VSDParser &); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
