diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index 178d4387..d6bf31ac 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -8099,8 +8099,13 @@ snd_pcm_chmap_t *snd_pcm_get_chmap(snd_pcm_t *pcm) */ int snd_pcm_set_chmap(snd_pcm_t *pcm, const snd_pcm_chmap_t *map) { - const snd_pcm_chmap_t *oldmap = snd_pcm_get_chmap(pcm); - if (oldmap && chmap_equal(oldmap, map)) + const snd_pcm_chmap_t *oldmap; + int nochange; + + oldmap = snd_pcm_get_chmap(pcm); + nochange = (oldmap && chmap_equal(oldmap, map)); + free((void *)oldmap); + if (nochange) return 0; if (!pcm->ops->set_chmap)