From: Andre Noll Date: Sun, 20 Feb 2011 16:01:15 +0000 (+0100) Subject: Fix alsa_init() error path. X-Git-Tag: v0.4.6~37 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=0267a3f3f13e16bc92b890e1d5bd49c5bd5c58e3;hp=0267a3f3f13e16bc92b890e1d5bd49c5bd5c58e3 Fix alsa_init() error path. If alsa_init() fails, alsa_write_post_select() removes the buffer tree node and sets t->error to a negative value. para_audiod (or para_write) then calls alsa->close() to deallocate any resources. At this point wn->private_data is non-NULL while pad->handle _is_ NULL. The subsequent call to snd_pcm_nonblock() therefore triggers the assertion para_audiod: pcm.c:724: snd_pcm_nonblock: Assertion `pcm' failed. which aborts para_audiod. Fix this bug by freeing the ->private_data pointer already in alsa_write_post_select() if alsa_init() fails. This way, ->private_data and pad->handle are either both NULL or both non-NULL, which meets the expectations of alsa_close(). ---