From e5cb0b3346914e1326d84fe042f795e29826c2ba Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 18 Sep 2025 11:03:02 +0200 Subject: [PATCH] conf: Revert "conf: fix load_for_all_cards()" This reverts commit ddfc32abf5697de1618b9e7ffdf57a0f97013090. It was not a correct fix. The private values may differ (multiple instances for e.g. USB sound cards). This fix prevents to load private configurations for other instances. Signed-off-by: Jaroslav Kysela --- src/conf.c | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/src/conf.c b/src/conf.c index a48e0db0..4dfa9cc5 100644 --- a/src/conf.c +++ b/src/conf.c @@ -4413,23 +4413,18 @@ static int _snd_config_hook_table(snd_config_t *root, snd_config_t *config, snd_ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config, snd_config_t **dst, snd_config_t *private_data ATTRIBUTE_UNUSED) { int card = -1, err; - snd_config_t *loaded; // trace loaded cards - err = snd_config_top(&loaded); - if (err < 0) - return err; do { err = snd_card_next(&card); if (err < 0) - goto __fin_err; + return err; if (card >= 0) { - snd_config_t *n, *m, *private_data = NULL; + snd_config_t *n, *private_data = NULL; const char *driver; char *fdriver = NULL; - bool load; err = snd_determine_driver(card, &fdriver); if (err < 0) - goto __fin_err; + return err; if (snd_config_search(root, fdriver, &n) >= 0) { if (snd_config_get_string(n, &driver) < 0) { if (snd_config_get_type(n) == SND_CONFIG_TYPE_COMPOUND) { @@ -4450,19 +4445,6 @@ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config, driver = fdriver; } __std: - load = true; - err = snd_config_imake_integer(&m, driver, 1); - if (err < 0) - goto __err; - err = snd_config_add(loaded, m); - if (err < 0) { - if (err == -EEXIST) { - snd_config_delete(m); - load = false; - } else { - goto __err; - } - } private_data = _snd_config_hook_private_data(card, driver); if (!private_data) { err = -ENOMEM; @@ -4471,22 +4453,17 @@ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config, err = _snd_config_hook_table(root, config, private_data); if (err < 0) goto __err; - if (load) - err = snd_config_hook_load(root, config, &n, private_data); + err = snd_config_hook_load(root, config, &n, private_data); __err: if (private_data) snd_config_delete(private_data); free(fdriver); if (err < 0) - goto __fin_err; + return err; } } while (card >= 0); - snd_config_delete(loaded); *dst = NULL; return 0; -__fin_err: - snd_config_delete(loaded); - return err; } #ifndef DOC_HIDDEN SND_DLSYM_BUILD_VERSION(snd_config_hook_load_for_all_cards, SND_CONFIG_DLSYM_VERSION_HOOK);