diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index b0af5596f6..9eeecb9a56 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -25,6 +25,7 @@ #include #include #include +#include #include "pbd/pool.h" #include "pbd/ringbuffer.h" @@ -86,7 +87,7 @@ public: OverwriteReason overwrite; }; - boost::shared_ptr track; + boost::weak_ptr track; union { bool second_yes_or_no; diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index ebdb02f2b2..bc8cb91a51 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -948,7 +948,9 @@ Session::process_event (SessionEvent* ev) break; case SessionEvent::Overwrite: - overwrite_some_buffers (ev->track, ev->overwrite); + if (boost::shared_ptr track = ev->track.lock()) { + overwrite_some_buffers (track, ev->overwrite); + } break; case SessionEvent::Audition: