Yep, it's a "return code was ignored" bug. diff --git a/media/libcubeb/src/cubeb_pulse.c b/media/libcubeb/src/cubeb_pulse.c index aaaaaaaaaaa..bbbbbbbbbbb 100644 --- a/media/libcubeb/src/cubeb_pulse.c +++ b/media/libcubeb/src/cubeb_pulse.c @@ -473,6 +473,8 @@ static int pulse_context_init(cubeb * ctx) { + int r; + if (ctx->context) { assert(ctx->error == 1); pulse_context_destroy(ctx); @@ -486,9 +488,9 @@ WRAP(pa_context_set_state_callback)(ctx->context, context_state_callback, ctx); WRAP(pa_threaded_mainloop_lock)(ctx->mainloop); - WRAP(pa_context_connect)(ctx->context, NULL, 0, NULL); + r = WRAP(pa_context_connect)(ctx->context, NULL, 0, NULL); - if (wait_until_context_ready(ctx) != 0) { + if (r < 0 || wait_until_context_ready(ctx) != 0) { WRAP(pa_threaded_mainloop_unlock)(ctx->mainloop); pulse_context_destroy(ctx); ctx->context = NULL;