]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: raise error when macro argument is already defined (used)
authorJaroslav Kysela <perex@perex.cz>
Wed, 24 Apr 2024 13:15:48 +0000 (15:15 +0200)
committerJaroslav Kysela <perex@perex.cz>
Wed, 24 Apr 2024 13:19:24 +0000 (15:19 +0200)
Link: https://github.com/alsa-project/alsa-ucm-conf/pull/411
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/parser.c

index 7da8060a82a681efca003890677b913b965e1f88..02f01a10aadac320c5b181522dce6e280814c87a 100644 (file)
@@ -446,13 +446,17 @@ static int evaluate_macro1(snd_use_case_mgr_t *uc_mgr,
                err = snd_config_get_id(n, &id);
                if (err < 0)
                        goto __err_path;
+               snprintf(name, sizeof(name), "__%s", id);
+               if (uc_mgr_get_variable(uc_mgr, name)) {
+                       uc_error("Macro argument '%s' is already defined", name);
+                       goto __err_path;
+               }
                err = snd_config_get_ascii(n, &var);
                if (err < 0)
                        goto __err_path;
                err = uc_mgr_get_substituted_value(uc_mgr, &var2, var);
                free(var);
                if (err >= 0) {
-                       snprintf(name, sizeof(name), "__%s", id);
                        err = uc_mgr_set_variable(uc_mgr, name, var2);
                        free(var2);
                }