提交 97d15a14 编写于 作者: M Markus Elfring 提交者: Takashi Iwai

ALSA: pcm: Use common error handling code in _snd_pcm_new()

Add a jump target so that a bit of exception handling can be better reused
at the end of this function.

This issue was detected by using the Coccinelle software.
Signed-off-by: NMarkus Elfring <elfring@users.sourceforge.net>
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 e17a85ec
...@@ -783,21 +783,27 @@ static int _snd_pcm_new(struct snd_card *card, const char *id, int device, ...@@ -783,21 +783,27 @@ static int _snd_pcm_new(struct snd_card *card, const char *id, int device,
INIT_LIST_HEAD(&pcm->list); INIT_LIST_HEAD(&pcm->list);
if (id) if (id)
strlcpy(pcm->id, id, sizeof(pcm->id)); strlcpy(pcm->id, id, sizeof(pcm->id));
if ((err = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_PLAYBACK, playback_count)) < 0) {
snd_pcm_free(pcm); err = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_PLAYBACK,
return err; playback_count);
} if (err < 0)
if ((err = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_CAPTURE, capture_count)) < 0) { goto free_pcm;
snd_pcm_free(pcm);
return err; err = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_CAPTURE, capture_count);
} if (err < 0)
if ((err = snd_device_new(card, SNDRV_DEV_PCM, pcm, &ops)) < 0) { goto free_pcm;
snd_pcm_free(pcm);
return err; err = snd_device_new(card, SNDRV_DEV_PCM, pcm, &ops);
} if (err < 0)
goto free_pcm;
if (rpcm) if (rpcm)
*rpcm = pcm; *rpcm = pcm;
return 0; return 0;
free_pcm:
snd_pcm_free(pcm);
return err;
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册