Skip to content

Commit c17922e

Browse files
committed
fix: memory leak in bidirectional
1 parent 9dad05b commit c17922e

2 files changed

Lines changed: 3 additions & 2 deletions

File tree

lib/Core/Executor.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5391,6 +5391,7 @@ void Executor::run(ExecutionState *initialState,
53915391
} else if (ExecutionMode == ExecutionKind::Bidirectional) {
53925392
InitializerPredicate *predicate = new TraceVerifyPredicate(
53935393
data.specialPoints, *codeGraphInfo.get(), InitializeInJoinBlocks);
5394+
// object manager assumes ownership over predicate
53945395
objectManager->setPredicate(predicate);
53955396
auto initializer = createIsolatedStatesInitializer(predicate, data);
53965397
isolatedStatesInitializer = initializer.get();

lib/Core/ObjectManager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class ObjectManager {
116116
std::vector<Subscriber *> subscribers;
117117
PForest *processForest;
118118

119-
InitializerPredicate *predicate;
119+
std::unique_ptr<InitializerPredicate> predicate;
120120

121121
public:
122122
ExecutionState *emptyState;
@@ -164,7 +164,7 @@ class ObjectManager {
164164
}
165165

166166
void setPredicate(InitializerPredicate *predicate_) {
167-
predicate = predicate_;
167+
predicate = std::unique_ptr<InitializerPredicate>(predicate_);
168168
}
169169
};
170170

0 commit comments

Comments
 (0)