diff options
author | Robin Gareus <robin@gareus.org> | 2014-12-31 03:12:57 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-12-31 03:19:00 +0100 |
commit | f499f4cfd2e98ee67d8267aea76a71bf8f47af68 (patch) | |
tree | 8a88f37280ffe7079c98e58c62e63fa205e36737 /libs/backends/dummy | |
parent | 2c8babf41ea3809720fe99d074a4f74ad84b8271 (diff) |
don't take temporary copy of MIDI sequence
fixes potential boost shared_ptr double free.
Diffstat (limited to 'libs/backends/dummy')
-rw-r--r-- | libs/backends/dummy/dummy_audiobackend.cc | 8 | ||||
-rw-r--r-- | libs/backends/dummy/dummy_audiobackend.h | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/libs/backends/dummy/dummy_audiobackend.cc b/libs/backends/dummy/dummy_audiobackend.cc index bd46a59cd0..087d652b9c 100644 --- a/libs/backends/dummy/dummy_audiobackend.cc +++ b/libs/backends/dummy/dummy_audiobackend.cc @@ -1769,10 +1769,10 @@ struct MidiEventSorter { } }; -void DummyMidiPort::set_loopback (const DummyMidiBuffer src) +void DummyMidiPort::set_loopback (DummyMidiBuffer const * const src) { _loopback.clear (); - for (DummyMidiBuffer::const_iterator it = src.begin (); it != src.end (); ++it) { + for (DummyMidiBuffer::const_iterator it = src->begin (); it != src->end (); ++it) { _loopback.push_back (boost::shared_ptr<DummyMidiEvent>(new DummyMidiEvent (**it))); } } @@ -1838,8 +1838,8 @@ void* DummyMidiPort::get_buffer (pframes_t n_samples) if (source->is_physical() && source->is_terminal()) { source->get_buffer(n_samples); // generate signal. } - const DummyMidiBuffer src = static_cast<const DummyMidiPort*>(*i)->const_buffer (); - for (DummyMidiBuffer::const_iterator it = src.begin (); it != src.end (); ++it) { + const DummyMidiBuffer *src = source->const_buffer (); + for (DummyMidiBuffer::const_iterator it = src->begin (); it != src->end (); ++it) { _buffer.push_back (boost::shared_ptr<DummyMidiEvent>(new DummyMidiEvent (**it))); } } diff --git a/libs/backends/dummy/dummy_audiobackend.h b/libs/backends/dummy/dummy_audiobackend.h index c7faf16896..56929d939c 100644 --- a/libs/backends/dummy/dummy_audiobackend.h +++ b/libs/backends/dummy/dummy_audiobackend.h @@ -193,10 +193,10 @@ class DummyMidiPort : public DummyPort { DataType type () const { return DataType::MIDI; }; void* get_buffer (pframes_t nframes); - const DummyMidiBuffer const_buffer () const { return _buffer; } + const DummyMidiBuffer * const_buffer () const { return &_buffer; } void setup_generator (int, float const); - void set_loopback (const DummyMidiBuffer src); + void set_loopback (DummyMidiBuffer const * const src); private: DummyMidiBuffer _buffer; |