Commit a1a6748f authored by Tiago Peixoto's avatar Tiago Peixoto
Browse files

Fix edge descriptor invalidation check

This fixes the edge invalidation check, when either the source of the
target vertex is removed.
parent 2e5abc00
......@@ -254,13 +254,21 @@ public:
bool IsValid() const
{
if (_g().ptr() == Py_None)
if (_g().ptr() == Py_None || !_valid)
return false;
GraphInterface& gi = python::extract<GraphInterface&>(_g().attr("_Graph__graph"));
GraphInterface::edge_t e(_e);
return (_valid &&
PythonVertex(_g, source(e, gi._state->_mg)).IsValid() &&
PythonVertex(_g, target(e, gi._state->_mg)).IsValid());
bool valid = PythonVertex(_g, source(e, gi._state->_mg)).IsValid() &&
PythonVertex(_g, target(e, gi._state->_mg)).IsValid();
if (!valid)
return false;
valid = false;
graph_traits<GraphInterface::multigraph_t>::out_edge_iterator ei, ei_end;
for (tie(ei, ei_end) = out_edges(source(e, gi._state->_mg), gi._state->_mg);
ei != ei_end; ++ei)
if (*ei == e)
valid = true;
return valid;
}
void SetValid(bool valid)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment