avoid crashes caused by the process buffer set being larger than expected when passed into Route::process_output_buffers()
git-svn-id: svn://localhost/ardour2/branches/3.0@5437 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
3ae28868ff
commit
d775781c2f
@ -583,7 +583,7 @@ AudioTrack::roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
|
||||
limit = blimit;
|
||||
|
||||
} else {
|
||||
for (i = 0, n = 1; i < blimit; ++i, ++n) {
|
||||
for (i = 0, n = 1; i < limit; ++i, ++n) {
|
||||
memcpy (bufs.get_audio (i).data(), b, sizeof (Sample) * nframes);
|
||||
if (n < diskstream->n_channels().n_audio()) {
|
||||
tmpb = diskstream->playback_buffer(n);
|
||||
@ -592,6 +592,13 @@ AudioTrack::roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* try to leave any MIDI buffers alone */
|
||||
|
||||
ChanCount chn;
|
||||
chn.set_audio (limit);
|
||||
chn.set_midi (_input->n_ports().n_midi());
|
||||
bufs.set_count (chn);
|
||||
}
|
||||
|
||||
/* don't waste time with automation if we're recording or we've just stopped (yes it can happen) */
|
||||
|
@ -230,7 +230,7 @@ bool
|
||||
InternalSend::configure_io (ChanCount in, ChanCount out)
|
||||
{
|
||||
bool ret = Send::configure_io (in, out);
|
||||
set_block_size (_session.get_block_size());
|
||||
set_block_size (_session.engine().frames_per_cycle());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1341,7 +1341,6 @@ Route::configure_processors_unlocked (ProcessorStreams* err)
|
||||
|
||||
// Ensure route outputs match last processor's outputs
|
||||
if (out != _output->n_ports ()) {
|
||||
cerr << "For " << _name << " out/last mismatch - out = " << out << " vs. " << _output->n_ports() << endl;
|
||||
_output->ensure_io (out, false, this);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user