diff options
author | Robin Gareus <robin@gareus.org> | 2014-10-09 09:48:54 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-10-09 09:48:54 +0200 |
commit | b4cf5e279bdf9ab75144c876ad8a17241515b943 (patch) | |
tree | 10613ee7e8670386f9f632371bbc2642cadd5cf6 /libs | |
parent | 4af4938c25b35080b2e5e71643d69fcf21d1eedd (diff) |
fix dup free in waves/midi:
The PortMidi queue just holds a pointer to the midi events.
The same Midi events are free()d during WavesMidiBuffer::clear()
which is called at cycle start for every buffer and in the dtor
of the WavesMidiBuffer.
Diffstat (limited to 'libs')
-rw-r--r-- | libs/backends/wavesaudio/waves_midi_device.cc | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/libs/backends/wavesaudio/waves_midi_device.cc b/libs/backends/wavesaudio/waves_midi_device.cc index c08586ca8c..9e69633afd 100644 --- a/libs/backends/wavesaudio/waves_midi_device.cc +++ b/libs/backends/wavesaudio/waves_midi_device.cc @@ -130,7 +130,7 @@ WavesMidiDevice::close () if (_input_pm_stream) { Pm_Close (_input_pm_stream); while (1 == Pm_Dequeue (_input_queue, &waves_midi_event)) { - delete waves_midi_event; + delete waves_midi_event; // XXX possible dup free in ~WavesMidiBuffer() (?) } Pm_QueueDestroy (_input_queue); @@ -143,7 +143,7 @@ WavesMidiDevice::close () if ( _output_pm_stream ) { Pm_Close (_output_pm_stream); while (1 == Pm_Dequeue (_output_queue, &waves_midi_event)) { - delete waves_midi_event; + delete waves_midi_event; // XXX possible dup free in ~WavesMidiBuffer() (?) } Pm_QueueDestroy (_output_queue); _output_queue = NULL; @@ -232,7 +232,6 @@ WavesMidiDevice::write_midi () } // COMMENTED DBG LOGS */ std::cout << "WavesMidiDevice::_write_midi (): SHORTMSG used, ev->tm:" << waves_midi_event->timestamp () - LATENCY << std::endl; } - delete waves_midi_event; } return; } |