OSDN Git Service

pcm: route: Correctly close slave pcm when no matching chmap is found
authorDavid Henningsson <david.henningsson@canonical.com>
Tue, 27 May 2014 07:51:21 +0000 (09:51 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 27 May 2014 09:21:52 +0000 (11:21 +0200)
This patch fixes a bug where the slave pcm was not correctly closed
on some error conditions, such as not finding a matching chmap.

Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/pcm/pcm_route.c

index 49567ea..751e36f 100644 (file)
@@ -1429,8 +1429,10 @@ int _snd_pcm_route_open(snd_pcm_t **pcmp, const char *name,
        if (tt_chmap) {
                err = find_matching_chmap(spcm, tt_chmap, &chmap, &schannels);
                free(tt_chmap);
-               if (err < 0)
+               if (err < 0) {
+                       snd_pcm_close(spcm);
                        return err;
+               }
        }
 
        err = _snd_pcm_route_determine_ttable(tt, &csize, &ssize, chmap);