Boost logo

Boost Users :

From: Jean Utke (utke_at_[hidden])
Date: 2005-03-19 18:47:29


Hi,

I noticed that with boost 1.32 under gcc 3.4.3 there are cases when
remove_edge fails to remove the edge in question.
I put this with all kinds of details on bugtracker under
http://sourceforge.net/tracker/index.php?func=detail&aid=1166401&group_id=7586&atid=107586

In short the problem appears to be the use of std::equal_range in the code
for remove_edge. With a certain order of the vertex and edge creation
it happens that equal_range returns an (end_of_list,end_of_list) pair
instead of the range that includes the edge in question.
I believe this is due to the list not being ordered according to the
same "<" operator that std::equal_range invokes. So equal_ranges
logic doesn't find the proper range, and remove_edge simply returns
without
warning and without removing the edge in question.
There is more detail in the bug report mentioned above.

I am just wondering about a good workaround. Currently I am considering
to replace the equal_range call in my copy of the source but there
may be a better way. ?

Jean

-- 
Jean Utke
Argonne National Lab./MCS
utke_at_[hidden]
phone: 630 252 4552 
cell:  630 363 5753

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net