# # patch "roster4.cc" # from [1ce914c27fdc4624beaa07734b2876304101a683] # to [2514d61af0713dcd0efc59f8fb26dc665b04a57d] # ======================================================================== --- roster4.cc 1ce914c27fdc4624beaa07734b2876304101a683 +++ roster4.cc 2514d61af0713dcd0efc59f8fb26dc665b04a57d @@ -1494,7 +1494,20 @@ typedef enum { start, in_left, in_right, in_both, no_more } parallel_state; - + void + dump(parallel_state const & st, std::string & out) + { + out = lexical_cast(st); + switch (st) + { + case start: out += " start"; break; + case in_left: out += " in_left"; break; + case in_right: out += " in_right"; break; + case in_both: out += " in_both"; break; + case no_more: out += " no_more"; break; + } + out += "\n"; + } template bool parallel_iter_incr(parallel_state & state, @@ -1601,9 +1614,9 @@ { full_attr_map_t::const_iterator from_ai, to_ai; parallel_state state = start; - while (parallel_iter_incr(state, from_n->attrs, from_ai, to_n->attrs, to_ai)) { + MM(state); if ((state == in_left || (state == in_both && !to_ai->second.first)) && from_ai->second.first) safe_insert(cs.attrs_cleared, @@ -1614,9 +1627,6 @@ safe_insert(cs.attrs_set, make_pair(make_pair(to_sp, to_ai->first), to_ai->second.second)); - - else - I(false); } } } @@ -1631,6 +1641,7 @@ from.all_nodes(), from_i, to.all_nodes(), to_i)) { + MM(state); switch (state) { case start: