diff --git a/graph/Graph.cc b/graph/Graph.cc index 46833f82..512750f4 100644 --- a/graph/Graph.cc +++ b/graph/Graph.cc @@ -515,9 +515,14 @@ Graph::makeArrivals(Vertex *vertex, } Arrival * -Graph::arrivals(Vertex *vertex) const +Graph::arrivals(Vertex *vertex) { - return arrivals_.pointer(vertex->arrivals()); + Arrival *arrivals; + { + UniqueLock lock(arrivals_lock_); + arrivals = arrivals_.pointer(vertex->arrivals()); + } + return arrivals; } void diff --git a/include/sta/Graph.hh b/include/sta/Graph.hh index 32141e7b..3d989bdb 100644 --- a/include/sta/Graph.hh +++ b/include/sta/Graph.hh @@ -100,7 +100,7 @@ public: VertexId vertexCount() { return vertices_->size(); } Arrival *makeArrivals(Vertex *vertex, uint32_t count); - Arrival *arrivals(Vertex *vertex) const; + Arrival *arrivals(Vertex *vertex); void clearArrivals(); PathVertexRep *makePrevPaths(Vertex *vertex, uint32_t count); @@ -274,7 +274,7 @@ public: bool isRoot() const{ return level_ == 0; } LevelColor color() const { return static_cast(color_); } void setColor(LevelColor color); - ArrivalId arrivals() const { return arrivals_; } + ArrivalId arrivals() { return arrivals_; } void setArrivals(ArrivalId id); PrevPathId prevPaths() const { return prev_paths_; } void setPrevPaths(PrevPathId id); diff --git a/search/PathVertexRep.cc b/search/PathVertexRep.cc index 1411bc01..8b338a70 100644 --- a/search/PathVertexRep.cc +++ b/search/PathVertexRep.cc @@ -132,7 +132,7 @@ PathVertexRep::tag(const StaState *sta) const Arrival PathVertexRep::arrival(const StaState *sta) const { - const Graph *graph = sta->graph(); + Graph *graph = sta->graph(); const Search *search = sta->search(); Tag *tag = search->tag(tag_index_); Vertex *vertex = graph->vertex(vertex_id_);