diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2012-06-14 21:57:06 +0200 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-06-15 22:11:22 +0200 |
commit | 70ed7beae7b21e391df0a246078c2103f8b3fe3a (patch) | |
tree | 435cc5221cfb2d471b26859f5b616f24e566ba23 /libvisio | |
parent | 553f9ccfc8a6048528b9ffcd535adf7f1cd51fc7 (diff) |
Resolves: fdo#50988
Fix Draw crashes on loading MS Logical Design Diagram example visio file
It was a problem with an iterator. The comparison was OK only on "else" part.
In the "if" part, iterators are from different sequences.
Change-Id: I1ccc82a1c24289c0c2e89ef0275f0f5163dc8a8d
Signed-off-by: Fridrich Štrba <fridrich.strba@bluewin.ch>
Diffstat (limited to 'libvisio')
-rw-r--r-- | libvisio/libvisio-0.0.17-fdo50988.patch | 27 | ||||
-rw-r--r-- | libvisio/makefile.mk | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/libvisio/libvisio-0.0.17-fdo50988.patch b/libvisio/libvisio-0.0.17-fdo50988.patch new file mode 100644 index 000000000000..50b2dbac64ce --- /dev/null +++ b/libvisio/libvisio-0.0.17-fdo50988.patch @@ -0,0 +1,27 @@ +--- misc/build/libvisio-0.0.17/src/lib/VSDXContentCollector.cpp 2012-06-12 20:44:51.773937254 +0200 ++++ misc/libvisio-0.0.17/src/lib/VSDXContentCollector.cpp 2012-06-14 21:38:10.947384110 +0200 +@@ -1601,6 +1601,7 @@ + void libvisio::VSDXContentCollector::collectPolylineTo(unsigned id, unsigned level, double x, double y, unsigned dataID) + { + std::map<unsigned, PolylineData>::const_iterator iter; ++ std::map<unsigned, PolylineData>::const_iterator iterEnd; + if (dataID == 0xFFFFFFFE) // Use stencil polyline data + { + if (!m_stencilShape || m_stencilShape->m_geometries.size() < m_currentGeometryCount) +@@ -1613,13 +1614,15 @@ + VSDXGeometryListElement *element = m_stencilShape->m_geometries[m_currentGeometryCount-1].getElement(id); + dataID = dynamic_cast<VSDXPolylineTo2 *>(element)->m_dataID; + iter = m_stencilShape->m_polylineData.find(dataID); ++ iterEnd = m_stencilShape->m_polylineData.end(); + } + else // No stencils involved, directly get dataID + { + iter = m_polylineData.find(dataID); ++ iterEnd = m_polylineData.end(); + } + +- if (iter != m_polylineData.end()) ++ if (iter != iterEnd) + { + PolylineData data = iter->second; + collectPolylineTo(id, level, x, y, data.xType, data.yType, data.points); diff --git a/libvisio/makefile.mk b/libvisio/makefile.mk index ac76289dd7f5..305a32b07bf8 100644 --- a/libvisio/makefile.mk +++ b/libvisio/makefile.mk @@ -58,6 +58,7 @@ TARFILE_NAME=libvisio-0.0.17 TARFILE_MD5=90010e213dd25648e70f0cc12f8fed55 PATCH_FILES=\ + $(TARFILE_NAME)-fdo50988.patch \ $(TARFILE_NAME).patch BUILD_ACTION=dmake $(MFLAGS) $(CALLMACROS) |