Fix possible segfault when ALSA MIDI port registration fails

This commit is contained in:
Robin Gareus 2019-08-23 04:39:12 +02:00
parent d52cf0f739
commit 8fadf44978
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
1 changed files with 11 additions and 10 deletions

View File

@ -1657,17 +1657,18 @@ AlsaAudioBackend::register_system_midi_ports(const std::string device)
if (!p) {
mout->stop();
delete mout;
} else {
LatencyRange lr;
lr.min = lr.max = (nfo->systemic_output_latency);
set_latency_range (p, true, lr);
static_cast<AlsaMidiPort*>(p)->set_n_periods(_periods_per_cycle); // TODO check MIDI alignment
AlsaPort *ap = static_cast<AlsaPort*>(p);
ap->set_pretty_name (replace_name_io (i->first, false));
pthread_mutex_lock (&_device_port_mutex);
_system_midi_out.push_back (ap);
pthread_mutex_unlock (&_device_port_mutex);
_rmidi_out.push_back (mout);
}
LatencyRange lr;
lr.min = lr.max = (nfo->systemic_output_latency);
set_latency_range (p, true, lr);
static_cast<AlsaMidiPort*>(p)->set_n_periods(_periods_per_cycle); // TODO check MIDI alignment
AlsaPort *ap = static_cast<AlsaPort*>(p);
ap->set_pretty_name (replace_name_io (i->first, false));
pthread_mutex_lock (&_device_port_mutex);
_system_midi_out.push_back (ap);
pthread_mutex_unlock (&_device_port_mutex);
_rmidi_out.push_back (mout);
}
}