diff options
Diffstat (limited to 'src/libcamera/object.cpp')
-rw-r--r-- | src/libcamera/object.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libcamera/object.cpp b/src/libcamera/object.cpp index 21aad565..f2a8be17 100644 --- a/src/libcamera/object.cpp +++ b/src/libcamera/object.cpp @@ -76,7 +76,12 @@ Object::Object(Object *parent) */ Object::~Object() { - for (SignalBase *signal : signals_) + /* + * Move signals to a private list to avoid concurrent iteration and + * deletion of items from Signal::disconnect(). + */ + std::list<SignalBase *> signals(std::move(signals_)); + for (SignalBase *signal : signals) signal->disconnect(this); if (pendingMessages_) |