|
From: | Stefan Monnier |
Subject: | bug#58158: 29.0.50; [overlay] Interval tree iteration considered harmful |
Date: | Thu, 29 Sep 2022 18:09:01 -0400 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
> static _Rb_tree_node_base* > local_Rb_tree_increment(_Rb_tree_node_base* __x) throw () > { > if (__x->_M_right != 0) > { > __x = __x->_M_right; > while (__x->_M_left != 0) > __x = __x->_M_left; > } > else > { > _Rb_tree_node_base* __y = __x->_M_parent; > while (__x == __y->_M_right) > { > __x = __y; > __y = __y->_M_parent; > } > if (__x->_M_right != __y) > __x = __y; > } > return __x; > } > > I hope one can read that. I changed the code to store the `visited` bit in the work stack, but if you could rewrite the `interval_generator_next` along the lines of the code above that would be great. [ An alternative would be to try and get rid of the `parent` field :-) ] Stefan
[Prev in Thread] | Current Thread | [Next in Thread] |