summaryrefslogtreecommitdiff
path: root/libs/ardour/session_ltc.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-08-01 23:27:34 +0200
committerRobin Gareus <robin@gareus.org>2017-08-01 23:27:34 +0200
commit1a288ddd952752e9fdf528eb5d135f0af7dd6f73 (patch)
tree0a6d7c37c703f3c10a85cb1486b5dcd1b853dcaa /libs/ardour/session_ltc.cc
parent9694986a85da8e7d18e9003e3706939bf4e34097 (diff)
Fix some more crashes at session-close
PortDrop unregisters backend ports, the backend will return a NULL buffer-pointer, but the I/O object still exists (Metronome, LTC) AudioBuffer::_data == 0 #0 msvcrt!memset () from C:\Windows\System32\msvcrt.dll #1 ARDOUR::AudioBuffer::silence (this=0x2c410710, len=256, offset=0) at ../libs/ardour/audio_buffer.cc:88 #2 ARDOUR::AudioPort::cycle_end (this=0x34918730, nframes=256) at ../libs/ardour/audio_port.cc:66 #3 ARDOUR::PortManager::cycle_end (this=this@entry=0x23342770, nframes=nframes@entry=256) [process callback w/o session]
Diffstat (limited to 'libs/ardour/session_ltc.cc')
-rw-r--r--libs/ardour/session_ltc.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/libs/ardour/session_ltc.cc b/libs/ardour/session_ltc.cc
index 87fd47e70e..91e11c8a4c 100644
--- a/libs/ardour/session_ltc.cc
+++ b/libs/ardour/session_ltc.cc
@@ -170,6 +170,12 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
pframes_t txf = 0;
boost::shared_ptr<Port> ltcport = ltc_output_port();
+ if (!ltcport) {
+ assert (deletion_in_progress ());
+ return;
+ }
+
+ /* marks buffer as not written */
Buffer& buf (ltcport->get_buffer (nframes));
if (!ltc_encoder || !ltc_enc_buf) {