Fix potential issue in GUI thread mutual recursion

While the assumption that this is always the last element should hold
true, there may be exceptions so better be safe than sorry.
This commit is contained in:
Robbert van der Helm
2021-01-20 03:26:10 +01:00
parent 508d393bbc
commit 5f7f44ce20
2 changed files with 6 additions and 2 deletions
@@ -245,7 +245,9 @@ class Vst3PlugViewProxyImpl : public Vst3PlugViewProxy {
// once we receive a response // once we receive a response
std::lock_guard lock(mutual_recursion_contexts_mutex); std::lock_guard lock(mutual_recursion_contexts_mutex);
current_io_context->stop(); current_io_context->stop();
mutual_recursion_contexts.pop_back(); mutual_recursion_contexts.erase(
std::find(mutual_recursion_contexts.begin(),
mutual_recursion_contexts.end(), current_io_context));
response_promise.set_value(response); response_promise.set_value(response);
}); });
+3 -1
View File
@@ -273,7 +273,9 @@ class Vst3Bridge : public HostBridge {
// once we receive a response // once we receive a response
std::lock_guard lock(mutual_recursion_contexts_mutex); std::lock_guard lock(mutual_recursion_contexts_mutex);
current_io_context->stop(); current_io_context->stop();
mutual_recursion_contexts.pop_back(); mutual_recursion_contexts.erase(
std::find(mutual_recursion_contexts.begin(),
mutual_recursion_contexts.end(), current_io_context));
response_promise.set_value(response); response_promise.set_value(response);
}); });