Changeset 48f09f2f in mainline


Ignore:
Timestamp:
2018-07-05T21:41:22Z (6 years ago)
Author:
Dzejrou <dzejrou@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e8ebed9
Parents:
bb02129
git-author:
Dzejrou <dzejrou@…> (2018-05-01 20:48:53)
git-committer:
Dzejrou <dzejrou@…> (2018-07-05 21:41:22)
Message:

cpp: rbtree::find_parent_for_insertion now uses key_type instead of value_type, this caused problems with map::operator[]

Location:
uspace/lib/cpp/include/internal
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/cpp/include/internal/rbtree.hpp

    rbb02129 r48f09f2f  
    313313            }
    314314
    315             node_type* find_parent_for_insertion(const value_type& val) const
     315            node_type* find_parent_for_insertion(const key_type& key) const
    316316            {
    317317                auto current = root_;
     
    321321                {
    322322                    parent = current;
    323                     if (key_compare_(key_extractor_(val), key_extractor_(current->value)))
     323                    if (key_compare_(key, key_extractor_(current->value)))
    324324                        current = current->left;
    325325                    else
  • uspace/lib/cpp/include/internal/rbtree_policies.hpp

    rbb02129 r48f09f2f  
    170170
    171171            auto val = value_type{forward<Args>(args)...};
    172             auto parent = tree.find_parent_for_insertion(val);
     172            auto parent = tree.find_parent_for_insertion(tree.get_key(val));
    173173
    174174            if (parent && tree.keys_equal(tree.get_key(parent->value), tree.get_key(val)))
     
    189189            using node_type = typename Tree::node_type;
    190190
    191             auto parent = tree.find_parent_for_insertion(val);
     191            auto parent = tree.find_parent_for_insertion(tree.get_key(val));
    192192            if (parent && tree.keys_equal(tree.get_key(parent->value), tree.get_key(val)))
    193193                return make_pair(iterator{parent, false}, false);
     
    207207            using node_type = typename Tree::node_type;
    208208
    209             auto parent = tree.find_parent_for_insertion(val);
     209            auto parent = tree.find_parent_for_insertion(tree.get_key(val));
    210210            if (parent && tree.keys_equal(tree.get_key(parent->value), tree.get_key(val)))
    211211                return make_pair(iterator{parent, false}, false);
     
    388388            using iterator  = typename Tree::iterator;
    389389
    390             auto parent = tree.find_parent_for_insertion(node->value);
     390            auto parent = tree.find_parent_for_insertion(tree.get_key(node->value));
    391391            tree.insert_node(node, parent);
    392392
Note: See TracChangeset for help on using the changeset viewer.