[libreoffice/f15/master] Resolves: rhbz#680766 crash in mdds
David Tardon
dtardon at fedoraproject.org
Thu Mar 24 16:33:00 UTC 2011
commit 61e0d651ae48acb0d341b7cd59517855260cdfb3
Author: David Tardon <dtardon at redhat.com>
Date: Thu Mar 24 17:31:33 2011 +0100
Resolves: rhbz#680766 crash in mdds
libreoffice.spec | 12 +++++++++-
mdds.add-missing-link.patch | 15 +++++++++++++
mdds.do-not-insert-new-node.patch | 43 +++++++++++++++++++++++++++++++++++++
rhbz680766.fix-mdds-crash.patch | 13 +++++++++++
4 files changed, 82 insertions(+), 1 deletions(-)
---
diff --git a/libreoffice.spec b/libreoffice.spec
index b7bc03e..5f46fc4 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -29,7 +29,7 @@ Summary: Free Software Productivity Suite
Name: libreoffice
Epoch: 1
Version: 3.3.2.2
-Release: 2%{?dist}
+Release: 3%{?dist}
License: LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and (CDDL or GPLv2) and Public Domain
Group: Applications/Productivity
URL: http://www.documentfoundation.org/develop
@@ -129,6 +129,9 @@ Patch40: 0001-Related-rhbz-680460-don-t-bother-with-an-interim-Fon.patch
Patch41: 0001-Resolves-rhbz-680460-honour-lcdfilter-subpixeling-et.patch
Patch42: 0001-Cut-Gordian-Knot-of-who-owns-the-font-options.patch
Patch43: 0001-beware-of-invalidated-iterator.patch
+Patch44: rhbz680766.fix-mdds-crash.patch
+Patch45: mdds.add-missing-link.patch
+Patch46: mdds.do-not-insert-new-node.patch
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
%define instdir %{_libdir}
@@ -775,11 +778,15 @@ mv -f redhat.soc extras/source/palettes/standard.soc
%patch41 -p1 -b .rhbz680460-honour-lcdfilter-subpixeling-et.patch
%patch42 -p1 -b .Cut-Gordian-Knot-of-who-owns-the-font-options.patch
%patch43 -p1 -b .beware-of-invalidated-iterator.patch
+%patch44 -p1 -b .rhbz680766.fix-mdds-crash.patch
touch scripting/source/pyprov/delzip
touch scripting/util/provider/beanshell/delzip
touch scripting/util/provider/javascript/delzip
+cp %{PATCH45} mdds
+cp %{PATCH46} mdds
+
%build
echo build start time is `date`, diskspace: `df -h . | tail -n 1`
#don't build localized helps which are poorly translated
@@ -2121,6 +2128,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%{basisinstdir}/program/kde-open-url
%changelog
+* Thu Mar 24 2011 David Tardon <dtardon at redhat.com> 3.3.2.2-3
+- Resolves: rhbz#680766 crash in mdds
+
* Wed Mar 23 2011 David Tardon <dtardon at redhat.com> 3.3.2.2-2
- Related: rhbz#689268 versioned deps need to contain epoch
diff --git a/mdds.add-missing-link.patch b/mdds.add-missing-link.patch
new file mode 100644
index 0000000..ca41a3f
--- /dev/null
+++ b/mdds.add-missing-link.patch
@@ -0,0 +1,15 @@
+# HG changeset patch
+# Parent d5fb760990e45ae0db4f4b7609d8affb85101a39
+add missing link
+
+diff -r d5fb760990e4 -r c08b02a02f23 include/mdds/flat_segment_tree_def.inl
+--- a/inc/mdds/flat_segment_tree.hpp Thu Mar 24 14:52:10 2011 +0100
++++ b/inc/mdds/flat_segment_tree.hpp Thu Mar 24 14:53:14 2011 +0100
+@@ -438,6 +438,7 @@
+ m_left_leaf->value_leaf.value = m_init_val;
+ new_node->left = m_left_leaf;
+ new_node->right = m_left_leaf->right;
++ m_left_leaf->right->left = new_node;
+ m_left_leaf->right = new_node;
+ }
+
diff --git a/mdds.do-not-insert-new-node.patch b/mdds.do-not-insert-new-node.patch
new file mode 100644
index 0000000..39dd396
--- /dev/null
+++ b/mdds.do-not-insert-new-node.patch
@@ -0,0 +1,43 @@
+# HG changeset patch
+# Parent ff6ad274f8ecb1715d366ddb53ecafd422252660
+do not insert new node if the whole range was shifted
+
+diff -r ff6ad274f8ec include/mdds/flat_segment_tree_def.inl
+--- a/inc/mdds/flat_segment_tree.hpp Thu Mar 24 14:54:16 2011 +0100
++++ b/inc/mdds/flat_segment_tree.hpp Thu Mar 24 14:55:26 2011 +0100
+@@ -430,16 +430,25 @@
+
+ if (m_left_leaf->value_leaf.value != m_init_val)
+ {
+- // The leftmost leaf node has a non-initial value. We need to
+- // insert a new node to carry that value after the shift.
+- node_ptr new_node(new node(true));
+- new_node->value_leaf.key = pos + size;
+- new_node->value_leaf.value = m_left_leaf->value_leaf.value;
+- m_left_leaf->value_leaf.value = m_init_val;
+- new_node->left = m_left_leaf;
+- new_node->right = m_left_leaf->right;
+- m_left_leaf->right->left = new_node;
+- m_left_leaf->right = new_node;
++ if (size < m_right_leaf->value_leaf.key - m_left_leaf->value_leaf.key)
++ {
++ // The leftmost leaf node has a non-initial value. We need to
++ // insert a new node to carry that value after the shift.
++ node_ptr new_node(new node(true));
++ new_node->value_leaf.key = pos + size;
++ new_node->value_leaf.value = m_left_leaf->value_leaf.value;
++ m_left_leaf->value_leaf.value = m_init_val;
++ new_node->left = m_left_leaf;
++ new_node->right = m_left_leaf->right;
++ m_left_leaf->right->left = new_node;
++ m_left_leaf->right = new_node;
++ }
++ else
++ {
++ // We shifted out the whole range, so there would be no new
++ // node inserted. Just set default value.
++ m_left_leaf->value_leaf.value = m_init_val;
++ }
+ }
+
+ m_valid_tree = false;
diff --git a/rhbz680766.fix-mdds-crash.patch b/rhbz680766.fix-mdds-crash.patch
new file mode 100644
index 0000000..500e112
--- /dev/null
+++ b/rhbz680766.fix-mdds-crash.patch
@@ -0,0 +1,13 @@
+diff -up libreoffice-3.3.2.2/mdds/makefile.mk.dt libreoffice-3.3.2.2/mdds/makefile.mk
+--- libreoffice-3.3.2.2/mdds/makefile.mk.dt 2011-03-24 16:59:53.237493218 +0100
++++ libreoffice-3.3.2.2/mdds/makefile.mk 2011-03-24 17:26:51.098221650 +0100
+@@ -38,7 +38,8 @@ TARGET=mdds
+
+ TARFILE_NAME=mdds_0.3.0
+ TARFILE_MD5=cf8a6967f7de535ae257fa411c98eb88
+-PATCH_FILES=
++PATCH_FILES= mdds.add-missing-link.patch \
++ mdds.do-not-insert-new-node.patch
+
+ CONFIGURE_DIR=
+ CONFIGURE_ACTION=
More information about the scm-commits
mailing list