summaryrefslogtreecommitdiff
path: root/libvisio
diff options
context:
space:
mode:
authorJulien Nabet <serval2412@yahoo.fr>2012-06-14 21:57:06 +0200
committerFridrich Štrba <fridrich.strba@bluewin.ch>2012-06-15 22:11:22 +0200
commit70ed7beae7b21e391df0a246078c2103f8b3fe3a (patch)
tree435cc5221cfb2d471b26859f5b616f24e566ba23 /libvisio
parent553f9ccfc8a6048528b9ffcd535adf7f1cd51fc7 (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.patch27
-rw-r--r--libvisio/makefile.mk1
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)