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);
|
vertex->setRequireds(arrival_null);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
Graph::clearArrivals()
|
|
||||||
{
|
|
||||||
arrivals_.clear();
|
|
||||||
requireds_.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
PathVertexRep *
|
PathVertexRep *
|
||||||
Graph::makePrevPaths(Vertex *vertex,
|
Graph::makePrevPaths(Vertex *vertex,
|
||||||
uint32_t count)
|
uint32_t count)
|
||||||
|
|
@ -674,19 +667,32 @@ Graph::deletePrevPaths(Vertex *vertex,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Graph::clearPrevPaths()
|
Graph::deletePaths()
|
||||||
{
|
{
|
||||||
|
arrivals_.clear();
|
||||||
|
requireds_.clear();
|
||||||
prev_paths_.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
|
void
|
||||||
Graph::deletePaths(Vertex *vertex,
|
Graph::deletePaths(Vertex *vertex,
|
||||||
uint32_t count)
|
uint32_t count)
|
||||||
{
|
{
|
||||||
if (vertex->arrivals() != arrival_null) {
|
if (vertex->arrivals() != arrival_null) {
|
||||||
|
LockGuard lock(arrivals_lock_);
|
||||||
arrivals_.destroy(vertex->arrivals(), count);
|
arrivals_.destroy(vertex->arrivals(), count);
|
||||||
vertex->setArrivals(arrival_null);
|
vertex->setArrivals(arrival_null);
|
||||||
|
vertex->tag_group_index_ = tag_group_index_max;
|
||||||
|
vertex->crpr_path_pruning_disabled_ = false;
|
||||||
}
|
}
|
||||||
if (vertex->requireds() != arrival_null) {
|
if (vertex->requireds() != arrival_null) {
|
||||||
requireds_.destroy(vertex->requireds(), count);
|
requireds_.destroy(vertex->requireds(), count);
|
||||||
|
|
@ -697,9 +703,6 @@ Graph::deletePaths(Vertex *vertex,
|
||||||
prev_paths_.destroy(vertex->prevPaths(), count);
|
prev_paths_.destroy(vertex->prevPaths(), count);
|
||||||
vertex->setPrevPaths(object_id_null);
|
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);
|
Required *requireds(Vertex *vertex);
|
||||||
void deleteRequireds(Vertex *vertex,
|
void deleteRequireds(Vertex *vertex,
|
||||||
uint32_t count);
|
uint32_t count);
|
||||||
void clearArrivals();
|
|
||||||
size_t arrivalCount() const { return arrivals_.size(); }
|
size_t arrivalCount() const { return arrivals_.size(); }
|
||||||
size_t requiredCount() const { return requireds_.size(); }
|
size_t requiredCount() const { return requireds_.size(); }
|
||||||
PathVertexRep *makePrevPaths(Vertex *vertex,
|
PathVertexRep *makePrevPaths(Vertex *vertex,
|
||||||
|
|
@ -115,8 +114,9 @@ public:
|
||||||
PathVertexRep *prevPaths(Vertex *vertex) const;
|
PathVertexRep *prevPaths(Vertex *vertex) const;
|
||||||
void deletePrevPaths(Vertex *vertex,
|
void deletePrevPaths(Vertex *vertex,
|
||||||
uint32_t count);
|
uint32_t count);
|
||||||
void clearPrevPaths();
|
// Private to Search::deletePaths().
|
||||||
// Private to Search::deletePaths1(Vertex).
|
void deletePaths();
|
||||||
|
// Private to Search::deletePaths(Vertex).
|
||||||
void deletePaths(Vertex *vertex,
|
void deletePaths(Vertex *vertex,
|
||||||
uint32_t count);
|
uint32_t count);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -400,14 +400,8 @@ Search::deletePaths()
|
||||||
{
|
{
|
||||||
debugPrint(debug_, "search", 1, "delete paths");
|
debugPrint(debug_, "search", 1, "delete paths");
|
||||||
if (arrivals_exist_) {
|
if (arrivals_exist_) {
|
||||||
VertexIterator vertex_iter(graph_);
|
graph_->deletePaths();
|
||||||
while (vertex_iter.hasNext()) {
|
|
||||||
Vertex *vertex = vertex_iter.next();
|
|
||||||
deletePaths(vertex);
|
|
||||||
}
|
|
||||||
filtered_arrivals_->clear();
|
filtered_arrivals_->clear();
|
||||||
graph_->clearArrivals();
|
|
||||||
graph_->clearPrevPaths();
|
|
||||||
arrivals_exist_ = false;
|
arrivals_exist_ = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue