Skip to content

Commit 8d76a89

Browse files
committed
fix crash
1 parent 791a9c8 commit 8d76a89

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

src/backend/evaluator/layers/layer4_replacer.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
#include "layer4_replacement.h"
44

55
Replacement& Replacer::makeReplacement(int layer) {
6-
replacements.push_back(Replacement(
6+
replacements.emplace_back(
77
this,
88
layer
9-
));
9+
);
1010
return replacements.back();
1111
}
1212

@@ -27,15 +27,16 @@ void Replacer::pingId(SimPauseGuard& pauseGuard, middle_id_t id, int minLayer) {
2727
// }
2828
// replacement.pingId(pauseGuard, id);
2929
// }
30-
if (dependentReplacements.contains(id)) {
31-
std::set<Replacement*>& replacementsSet = dependentReplacements.at(id);
32-
for (Replacement* replacement : replacementsSet) {
33-
if (replacement->getLayer() < minLayer) {
34-
continue;
35-
}
36-
replacement->pingId(pauseGuard, id);
30+
auto node = dependentReplacements.extract(id);
31+
if (node.empty()) {
32+
return;
33+
}
34+
std::set<Replacement*>& replacementsSet = node.mapped();
35+
for (Replacement* replacement : replacementsSet) {
36+
if (replacement->getLayer() < minLayer) {
37+
continue;
3738
}
38-
dependentReplacements.erase(id);
39+
replacement->pingId(pauseGuard, id);
3940
}
4041
}
4142

src/backend/evaluator/layers/layer4_replacer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class Replacer {
119119
BusInterfacePassthrough busInterfacePassthrough;
120120
EvalConfig& evalConfig;
121121
IdProvider<middle_id_t>& middleIdProvider;
122-
std::vector<Replacement> replacements;
122+
std::deque<Replacement> replacements;
123123
std::unordered_map<middle_id_t, std::unordered_map<connection_end_id_t, EvalConnectionPoint>> replacedConnectionPoints;
124124
std::unordered_map<middle_id_t, middle_id_t> replacedIds;
125125
std::unordered_map<middle_id_t, int> replacementIdLayers;

src/precompiled.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <map>
2020
#include <mutex>
2121
#include <queue>
22+
#include <deque>
2223
#include <set>
2324
#include <shared_mutex>
2425
#include <stack>

0 commit comments

Comments
 (0)