[Libreoffice-commits] .: libvisio/libvisio-0.0.17-fdo50988.patch libvisio/makefile.mk

Julien Nabet serval2412 at kemper.freedesktop.org
Thu Jun 14 13:03:14 PDT 2012


 libvisio/libvisio-0.0.17-fdo50988.patch |   27 +++++++++++++++++++++++++++
 libvisio/makefile.mk                    |    1 +
 2 files changed, 28 insertions(+)

New commits:
commit cc85e1303fbdf7d1ff9c5b63ed9942206b53ddac
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Thu Jun 14 21:57:06 2012 +0200

    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

diff --git a/libvisio/libvisio-0.0.17-fdo50988.patch b/libvisio/libvisio-0.0.17-fdo50988.patch
new file mode 100644
index 0000000..50b2dba
--- /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 ac76289..305a32b 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)


More information about the Libreoffice-commits mailing list