threads seg fault
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
9f0997ef6f
commit
e476cd6b8d
|
|
@ -633,13 +633,6 @@ Graph::deleteRequireds(Vertex *vertex,
|
|||
vertex->setRequireds(arrival_null);
|
||||
}
|
||||
|
||||
void
|
||||
Graph::clearArrivals()
|
||||
{
|
||||
arrivals_.clear();
|
||||
requireds_.clear();
|
||||
}
|
||||
|
||||
PathVertexRep *
|
||||
Graph::makePrevPaths(Vertex *vertex,
|
||||
uint32_t count)
|
||||
|
|
@ -674,19 +667,32 @@ Graph::deletePrevPaths(Vertex *vertex,
|
|||
}
|
||||
|
||||
void
|
||||
Graph::clearPrevPaths()
|
||||
Graph::deletePaths()
|
||||
{
|
||||
arrivals_.clear();
|
||||
requireds_.clear();
|
||||
prev_paths_.clear();
|
||||
VertexIterator vertex_iter(graph_);
|
||||
while (vertex_iter.hasNext()) {
|
||||
Vertex *vertex = vertex_iter.next();
|
||||
vertex->setArrivals(arrival_null);
|
||||
vertex->setRequireds(arrival_null);
|
||||
vertex->setPrevPaths(object_id_null);
|
||||
vertex->tag_group_index_ = tag_group_index_max;
|
||||
vertex->crpr_path_pruning_disabled_ = false;
|
||||
}
|
||||
}
|
||||
|
||||
// No locks.
|
||||
void
|
||||
Graph::deletePaths(Vertex *vertex,
|
||||
uint32_t count)
|
||||
{
|
||||
if (vertex->arrivals() != arrival_null) {
|
||||
LockGuard lock(arrivals_lock_);
|
||||
arrivals_.destroy(vertex->arrivals(), count);
|
||||
vertex->setArrivals(arrival_null);
|
||||
vertex->tag_group_index_ = tag_group_index_max;
|
||||
vertex->crpr_path_pruning_disabled_ = false;
|
||||
}
|
||||
if (vertex->requireds() != arrival_null) {
|
||||
requireds_.destroy(vertex->requireds(), count);
|
||||
|
|
@ -697,9 +703,6 @@ Graph::deletePaths(Vertex *vertex,
|
|||
prev_paths_.destroy(vertex->prevPaths(), count);
|
||||
vertex->setPrevPaths(object_id_null);
|
||||
}
|
||||
|
||||
vertex->tag_group_index_ = tag_group_index_max;
|
||||
vertex->crpr_path_pruning_disabled_ = false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ public:
|
|||
Required *requireds(Vertex *vertex);
|
||||
void deleteRequireds(Vertex *vertex,
|
||||
uint32_t count);
|
||||
void clearArrivals();
|
||||
size_t arrivalCount() const { return arrivals_.size(); }
|
||||
size_t requiredCount() const { return requireds_.size(); }
|
||||
PathVertexRep *makePrevPaths(Vertex *vertex,
|
||||
|
|
@ -115,8 +114,9 @@ public:
|
|||
PathVertexRep *prevPaths(Vertex *vertex) const;
|
||||
void deletePrevPaths(Vertex *vertex,
|
||||
uint32_t count);
|
||||
void clearPrevPaths();
|
||||
// Private to Search::deletePaths1(Vertex).
|
||||
// Private to Search::deletePaths().
|
||||
void deletePaths();
|
||||
// Private to Search::deletePaths(Vertex).
|
||||
void deletePaths(Vertex *vertex,
|
||||
uint32_t count);
|
||||
|
||||
|
|
|
|||
|
|
@ -400,14 +400,8 @@ Search::deletePaths()
|
|||
{
|
||||
debugPrint(debug_, "search", 1, "delete paths");
|
||||
if (arrivals_exist_) {
|
||||
VertexIterator vertex_iter(graph_);
|
||||
while (vertex_iter.hasNext()) {
|
||||
Vertex *vertex = vertex_iter.next();
|
||||
deletePaths(vertex);
|
||||
}
|
||||
graph_->deletePaths();
|
||||
filtered_arrivals_->clear();
|
||||
graph_->clearArrivals();
|
||||
graph_->clearPrevPaths();
|
||||
arrivals_exist_ = false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue