From 735e5473e0969bce40e0817baf6211648b02f573 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 18 Jun 2001 14:43:46 +0000 Subject: [PATCH] Fixed SIGSEGV based on thinkos --- src/pcm/pcm_hooks.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/pcm/pcm_hooks.c b/src/pcm/pcm_hooks.c index 8ab7fcdb..58a94293 100644 --- a/src/pcm/pcm_hooks.c +++ b/src/pcm/pcm_hooks.c @@ -437,7 +437,7 @@ int _snd_pcm_hooks_open(snd_pcm_t **pcmp, const char *name, { snd_config_iterator_t i, next; int err; - snd_pcm_t *spcm; + snd_pcm_t *rpcm = NULL, *spcm; snd_config_t *slave = NULL, *sconf; snd_config_t *hooks = NULL; snd_config_for_each(i, next, conf) { @@ -471,7 +471,7 @@ int _snd_pcm_hooks_open(snd_pcm_t **pcmp, const char *name, snd_config_delete(sconf); if (err < 0) return err; - err = snd_pcm_hooks_open(pcmp, name, spcm, 1); + err = snd_pcm_hooks_open(&rpcm, name, spcm, 1); if (err < 0) { snd_pcm_close(spcm); return err; @@ -486,16 +486,17 @@ int _snd_pcm_hooks_open(snd_pcm_t **pcmp, const char *name, if (err < 0) { SNDERR("unknown pcm_hook %s", str); } else { - err = snd_pcm_hook_add_conf(*pcmp, root, n); + err = snd_pcm_hook_add_conf(rpcm, root, n); snd_config_delete(n); } } else - err = snd_pcm_hook_add_conf(*pcmp, root, n); + err = snd_pcm_hook_add_conf(rpcm, root, n); if (err < 0) { - snd_pcm_close(*pcmp); + snd_pcm_close(rpcm); return err; } } + *pcmp = rpcm; return 0; } -- 2.47.1