From: Jaroslav Kysela Date: Wed, 6 Nov 2019 09:19:57 +0000 (+0100) Subject: ucm: evaluate nested If blocks also in True/False blocks X-Git-Tag: v1.2.1~14 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=7ccaa086931026534c324ec43eaec1dd7a491a9f;p=alsa-lib.git ucm: evaluate nested If blocks also in True/False blocks Signed-off-by: Jaroslav Kysela --- diff --git a/src/ucm/ucm_cond.c b/src/ucm/ucm_cond.c index 0e2e44e0..3df83bd2 100644 --- a/src/ucm/ucm_cond.c +++ b/src/ucm/ucm_cond.c @@ -308,6 +308,16 @@ int uc_mgr_evaluate_condition(snd_use_case_mgr_t *uc_mgr, err = if_eval_one(uc_mgr, n, &a); if (err < 0) return err; + err = snd_config_search(a, "If", &n2); + if (err < 0 && err != -ENOENT) { + uc_error("If block error (If)"); + return -EINVAL; + } else if (err == 0) { + err = uc_mgr_evaluate_condition(uc_mgr, a, n2); + if (err < 0) + return err; + snd_config_delete(n2); + } snd_config_for_each(i2, next2, a) { n2 = snd_config_iterator_entry(i2); err = snd_config_remove(n2);