mirror of
https://github.com/boostorg/intrusive.git
synced 2025-08-03 22:44:43 +02:00
Fixed #10469: Erasing from intrusive unordered_multiset with optimize_multikey goes into an infinite loop
This commit is contained in:
@@ -253,7 +253,7 @@ struct group_functions
|
|||||||
if(group_algorithms::unique(first_in_group))
|
if(group_algorithms::unique(first_in_group))
|
||||||
group_algorithms::link_after(first_in_group, n);
|
group_algorithms::link_after(first_in_group, n);
|
||||||
else{
|
else{
|
||||||
group_algorithms::link_after(group_algorithms::node_traits::get_next(first_in_group), n);
|
group_algorithms::link_after(node_traits::get_next(first_in_group), n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@@ -272,8 +272,8 @@ struct group_functions
|
|||||||
|
|
||||||
//It's the last in group if the next_node is a bucket
|
//It's the last in group if the next_node is a bucket
|
||||||
slist_node_ptr nxt(node_traits::get_next(elem));
|
slist_node_ptr nxt(node_traits::get_next(elem));
|
||||||
bool last_in_group = (first_end_ptr <= nxt && nxt <= last_end_ptr)/* ||
|
bool last_in_group = (first_end_ptr <= nxt && nxt <= last_end_ptr) ||
|
||||||
(group_traits::get_next(nxt) != elem)*/;
|
(group_traits::get_next(detail::dcast_bucket_ptr<node>(nxt)) != elem);
|
||||||
//It's the first in group if group_previous's next_node is not
|
//It's the first in group if group_previous's next_node is not
|
||||||
//itself, as group list does not link bucket
|
//itself, as group list does not link bucket
|
||||||
node_ptr prev_in_group(group_traits::get_next(elem));
|
node_ptr prev_in_group(group_traits::get_next(elem));
|
||||||
|
Reference in New Issue
Block a user