From d6534eb143dbd9308d0ed1985c6d00ad50c9dec8 Mon Sep 17 00:00:00 2001 From: "Julien \"_FrnchFrgg_\" RIVAUD" Date: Sat, 9 Jul 2016 00:19:44 +0200 Subject: [PATCH] Assert that nobody calls IO::copy_to_output with empty bufs IO::copy_to_output() crashed if there was no channel to copy from. Since all callers seem to check before calling, just assert() that it is not the case. --- libs/ardour/io.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index 6d15d58478..ab667815cc 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -1721,12 +1721,14 @@ IO::collect_input (BufferSet& bufs, pframes_t nframes, ChanCount offset) void IO::copy_to_outputs (BufferSet& bufs, DataType type, pframes_t nframes, framecnt_t offset) { - // Copy any buffers 1:1 to outputs - PortSet::iterator o = _ports.begin(type); BufferSet::iterator i = bufs.begin(type); BufferSet::iterator prev = i; + assert(i != bufs.end(type)); // or second loop will crash + + // Copy any buffers 1:1 to outputs + while (i != bufs.end(type) && o != _ports.end (type)) { Buffer& port_buffer (o->get_buffer (nframes)); port_buffer.read_from (*i, nframes, offset);