/[packages]/cauldron/libreoffice/current/SOURCES/mdds.do-not-insert-new-node.patch
ViewVC logotype

Contents of /cauldron/libreoffice/current/SOURCES/mdds.do-not-insert-new-node.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 82064 - (show annotations) (download)
Fri Apr 8 07:14:52 2011 UTC (13 years, 9 months ago) by dmorgan
File size: 1988 byte(s)
Add fedora patches (Resolves: rhbz#680766 crash in mdds)
1 # HG changeset patch
2 # Parent ff6ad274f8ecb1715d366ddb53ecafd422252660
3 do not insert new node if the whole range was shifted
4
5 diff -r ff6ad274f8ec include/mdds/flat_segment_tree_def.inl
6 --- a/inc/mdds/flat_segment_tree.hpp Thu Mar 24 14:54:16 2011 +0100
7 +++ b/inc/mdds/flat_segment_tree.hpp Thu Mar 24 14:55:26 2011 +0100
8 @@ -430,16 +430,25 @@
9
10 if (m_left_leaf->value_leaf.value != m_init_val)
11 {
12 - // The leftmost leaf node has a non-initial value. We need to
13 - // insert a new node to carry that value after the shift.
14 - node_ptr new_node(new node(true));
15 - new_node->value_leaf.key = pos + size;
16 - new_node->value_leaf.value = m_left_leaf->value_leaf.value;
17 - m_left_leaf->value_leaf.value = m_init_val;
18 - new_node->left = m_left_leaf;
19 - new_node->right = m_left_leaf->right;
20 - m_left_leaf->right->left = new_node;
21 - m_left_leaf->right = new_node;
22 + if (size < m_right_leaf->value_leaf.key - m_left_leaf->value_leaf.key)
23 + {
24 + // The leftmost leaf node has a non-initial value. We need to
25 + // insert a new node to carry that value after the shift.
26 + node_ptr new_node(new node(true));
27 + new_node->value_leaf.key = pos + size;
28 + new_node->value_leaf.value = m_left_leaf->value_leaf.value;
29 + m_left_leaf->value_leaf.value = m_init_val;
30 + new_node->left = m_left_leaf;
31 + new_node->right = m_left_leaf->right;
32 + m_left_leaf->right->left = new_node;
33 + m_left_leaf->right = new_node;
34 + }
35 + else
36 + {
37 + // We shifted out the whole range, so there would be no new
38 + // node inserted. Just set default value.
39 + m_left_leaf->value_leaf.value = m_init_val;
40 + }
41 }
42
43 m_valid_tree = false;

  ViewVC Help
Powered by ViewVC 1.1.30