# HG changeset patch # User Sebastien Jodogne # Date 1775569287 -7200 # Node ID 669914eab130289f58c9b2d585b78cf974cb8bc3 # Parent d8c06c9408c2b952b318e5793fd2ea3c91e6eb5a cont finalization diff -r d8c06c9408c2 -r 669914eab130 Sources/OnChangeCallback.cpp --- a/Sources/OnChangeCallback.cpp Tue Apr 07 15:27:07 2026 +0200 +++ b/Sources/OnChangeCallback.cpp Tue Apr 07 15:41:27 2026 +0200 @@ -91,8 +91,7 @@ boost::condition_variable elementAvailable_; boost::condition_variable emptied_; -public: - ~PendingChanges() + void ClearInternal() { for (Queue::iterator it = queue_.begin(); it != queue_.end(); ++it) { @@ -100,6 +99,12 @@ delete *it; } } + +public: + ~PendingChanges() + { + ClearInternal(); + } void Enqueue(OrthancPluginChangeType changeType, OrthancPluginResourceType resourceType, @@ -150,6 +155,12 @@ emptied_.wait(lock); } } + + void Clear() + { + boost::mutex::scoped_lock lock(mutex_); + ClearInternal(); + } }; @@ -263,4 +274,6 @@ { StopThread(); ICallbackRegistration::Unregister(changesCallback_); + + pendingChanges_.Clear(); } diff -r d8c06c9408c2 -r 669914eab130 Sources/StorageArea.cpp --- a/Sources/StorageArea.cpp Tue Apr 07 15:27:07 2026 +0200 +++ b/Sources/StorageArea.cpp Tue Apr 07 15:41:27 2026 +0200 @@ -238,15 +238,18 @@ if (createCallback_ != NULL) { Py_XDECREF(createCallback_); + createCallback_ = NULL; } if (readCallback_ != NULL) { Py_XDECREF(readCallback_); + readCallback_ = NULL; } if (removeCallback_ != NULL) { Py_XDECREF(removeCallback_); + removeCallback_ = NULL; } } diff -r d8c06c9408c2 -r 669914eab130 Sources/StorageArea3.cpp --- a/Sources/StorageArea3.cpp Tue Apr 07 15:27:07 2026 +0200 +++ b/Sources/StorageArea3.cpp Tue Apr 07 15:41:27 2026 +0200 @@ -363,16 +363,19 @@ if (createCallback2_ != NULL) { Py_XDECREF(createCallback2_); + createCallback2_ = NULL; } if (readCallback2_ != NULL) { Py_XDECREF(readCallback2_); + readCallback2_ = NULL; } if (removeCallback2_ != NULL) { Py_XDECREF(removeCallback2_); + removeCallback2_ = NULL; } }