From ef600041ba1afb84b9caed44f43deb1000651340 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 25 Jul 2014 14:30:59 +0200 Subject: audio, client API: check mp_make_wakeup_pipe() return value Could fail e.g. due to FD exhaustion. --- audio/out/push.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'audio/out/push.c') diff --git a/audio/out/push.c b/audio/out/push.c index 0ecba19da7..0fb6cb3e29 100644 --- a/audio/out/push.c +++ b/audio/out/push.c @@ -364,17 +364,19 @@ static int init(struct ao *ao) pthread_mutex_init(&p->lock, NULL); pthread_cond_init(&p->wakeup, NULL); pthread_cond_init(&p->wakeup_drain, NULL); - mp_make_wakeup_pipe(p->wakeup_pipe); + if (mp_make_wakeup_pipe(p->wakeup_pipe) < 0) + goto err; p->buffer = mp_audio_buffer_create(ao); mp_audio_buffer_reinit_fmt(p->buffer, ao->format, &ao->channels, ao->samplerate); mp_audio_buffer_preallocate_min(p->buffer, ao->buffer); - if (pthread_create(&p->thread, NULL, playthread, ao)) { - ao->driver->uninit(ao); - return -1; - } + if (pthread_create(&p->thread, NULL, playthread, ao)) + goto err; return 0; +err: + ao->driver->uninit(ao); + return -1; } const struct ao_driver ao_api_push = { -- cgit v1.2.3