ucm: do not cache all control devices in get_card_long_name()

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2019-11-05 10:21:36 +01:00
parent 27f97ab585
commit b9b2247943

View file

@ -1453,6 +1453,9 @@ static int get_card_long_name(snd_use_case_mgr_t *mgr, char *longname)
while (card >= 0) {
char name[32];
/* most probably, we do not need to cache all CTL devices here */
uc_mgr_free_ctl_list(mgr);
sprintf(name, "hw:%d", card);
err = get_card_info(mgr, name, &ctl, info);
@ -1472,6 +1475,8 @@ static int get_card_long_name(snd_use_case_mgr_t *mgr, char *longname)
}
}
uc_mgr_free_ctl_list(mgr);
return -1;
}
@ -1577,8 +1582,10 @@ __longname:
__parse:
err = parse_master_file(uc_mgr, cfg);
snd_config_delete(cfg);
if (err < 0)
if (err < 0) {
uc_mgr_free_ctl_list(uc_mgr);
uc_mgr_free_verb(uc_mgr);
}
return err;