Resolves: rhbz#680766 fix a crash and two other bugs

f41
David Tardon 14 years ago
parent 439e44891d
commit 8eafca338b

@ -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/include/mdds/flat_segment_tree_def.inl Thu Mar 24 14:52:10 2011 +0100
+++ b/include/mdds/flat_segment_tree_def.inl 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;
}

@ -0,0 +1,19 @@
# HG changeset patch
# Parent 9b68208cb03bb3ece046c8b60a6a0777fea46d4a
fix typo in node::equals
diff -r 9b68208cb03b include/mdds/node.hpp
--- a/include/mdds/node.hpp Fri Feb 11 11:24:57 2011 -0500
+++ b/include/mdds/node.hpp Thu Mar 24 08:27:28 2011 +0100
@@ -154,9 +154,9 @@
return false;
if (is_leaf)
- return value_leaf == value_leaf;
+ return value_leaf == r.value_leaf;
else
- return value_nonleaf == value_nonleaf;
+ return value_nonleaf == r.value_nonleaf;
return true;
}

@ -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/include/mdds/flat_segment_tree_def.inl Thu Mar 24 14:54:16 2011 +0100
+++ b/include/mdds/flat_segment_tree_def.inl 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;

@ -3,7 +3,7 @@
Name: mdds Name: mdds
Version: 0.5.1 Version: 0.5.1
Release: 2%{?dist} Release: 3%{?dist}
Summary: A collection of multi-dimensional data structures and indexing algorithms Summary: A collection of multi-dimensional data structures and indexing algorithms
Group: Development/Libraries Group: Development/Libraries
@ -11,6 +11,9 @@ License: MIT
URL: http://code.google.com/p/multidimalgorithm/ URL: http://code.google.com/p/multidimalgorithm/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Source0: http://multidimalgorithm.googlecode.com/files/%{name}_%{version}.tar.bz2 Source0: http://multidimalgorithm.googlecode.com/files/%{name}_%{version}.tar.bz2
Patch0: compare-to-the-other-node.patch
Patch1: add-missing-link.patch
Patch2: do-not-insert-new-node.patch
BuildRequires: boost-devel BuildRequires: boost-devel
%if %{do_mem_tests} %if %{do_mem_tests}
@ -42,6 +45,9 @@ Headers for %{name}.
%prep %prep
%setup -q -n %{name}_%{version} %setup -q -n %{name}_%{version}
%patch0 -p1 -b .compare-to-the-other-node.patch
%patch1 -p1 -b .add-missing-link.patch
%patch2 -p1 -b .do-not-insert-new-node.patch
# this is only used in tests # this is only used in tests
sed -i -e '/^CPPFLAGS/s/-Wall.*-std/%{optflags} -std/' Makefile.in sed -i -e '/^CPPFLAGS/s/-Wall.*-std/%{optflags} -std/' Makefile.in
@ -86,6 +92,9 @@ rm -rf %{buildroot}
%changelog %changelog
* Thu Mar 24 2011 David Tardon <dtardon@redhat.com> - 0.5.1-3
- Resolves: rhbz#680766 fix a crash and two other bugs
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.5.1-2 * Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.5.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild

Loading…
Cancel
Save