diff --git a/src/ucm/parser.c b/src/ucm/parser.c index 98acd97e..7da8060a 100644 --- a/src/ucm/parser.c +++ b/src/ucm/parser.c @@ -415,7 +415,7 @@ static int evaluate_macro1(snd_use_case_mgr_t *uc_mgr, snd_config_iterator_t i, next; snd_config_t *m, *mc, *a, *n; const char *mid, *id; - char name[128], *var; + char name[128], *var, *var2; const char *s; int err; @@ -449,9 +449,13 @@ static int evaluate_macro1(snd_use_case_mgr_t *uc_mgr, err = snd_config_get_ascii(n, &var); if (err < 0) goto __err_path; - snprintf(name, sizeof(name), "__%s", id); - err = uc_mgr_set_variable(uc_mgr, name, var); + 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); + } if (err < 0) goto __err_path; }