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 3.3.2.2-3 +- Resolves: rhbz#680766 crash in mdds + * Wed Mar 23 2011 David Tardon 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=