13
0

* fixed crash: MidiBuffer::reserve returned wrong write location

git-svn-id: svn://localhost/ardour2/branches/3.0@4475 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Hans Baier 2009-02-02 08:50:28 +00:00
parent eaada01925
commit ae2e090e74

View File

@ -129,8 +129,14 @@ bool
MidiBuffer::push_back(const Evoral::MIDIEvent<TimeType>& ev)
{
const size_t stamp_size = sizeof(TimeType);
cerr << "MidiBuffer: pushing event " << " size: " << _size
<< " event size: " << ev.size()
<< " capacity: " << _capacity
<< " stamp size: " << stamp_size << " \n";
if (_size + stamp_size + ev.size() >= _capacity) {
cerr << "MidiBuffer::push_back failed (buffer is full)" << endl;
cerr << "MidiBuffer::push_back failed (buffer is full)"
<< endl;
return false;
}
@ -187,8 +193,12 @@ MidiBuffer::reserve(TimeType time, size_t size)
return 0;
}
uint8_t* const write_loc = _data + _size;
// write timestamp
uint8_t* write_loc = _data + _size;
*((TimeType*)write_loc) = time;
// move write_loc to begin of MIDI buffer data to write to
write_loc += stamp_size;
_size += stamp_size + size;
_silent = false;
@ -201,8 +211,9 @@ void
MidiBuffer::silence(nframes_t dur, nframes_t offset)
{
// FIXME use parameters
if (offset != 0)
if (offset != 0) {
cerr << "WARNING: MidiBuffer::silence w/ offset != 0 (not implemented)" << endl;
}
_size = 0;
_silent = true;