diff --git a/repos/base/src/core/include/trace/subject_registry.h b/repos/base/src/core/include/trace/subject_registry.h index ee7be41d26..7774f79f40 100644 --- a/repos/base/src/core/include/trace/subject_registry.h +++ b/repos/base/src/core/include/trace/subject_registry.h @@ -194,15 +194,7 @@ class Core::Trace::Subject /** * Destructor, releases ownership of associated source */ - ~Subject() - { - Locked_ptr source(_source); - - if (source.valid()) { - source->disable(); - source->release_ownership(*this); - } - } + ~Subject() { release(); } /** * Return registry-local ID @@ -306,6 +298,9 @@ class Core::Trace::Subject if (!source.valid()) return; + source->disable(); + source->release_ownership(*this); + _buffer.flush(); _policy.flush(); }