summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-10-09 09:48:54 +0200
committerRobin Gareus <robin@gareus.org>2014-10-09 09:48:54 +0200
commitb4cf5e279bdf9ab75144c876ad8a17241515b943 (patch)
tree10613ee7e8670386f9f632371bbc2642cadd5cf6 /libs
parent4af4938c25b35080b2e5e71643d69fcf21d1eedd (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.cc5
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;
}