From b9b2247943751714151dc19de57905caf61c618b Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 5 Nov 2019 10:21:36 +0100 Subject: [PATCH] ucm: do not cache all control devices in get_card_long_name() Signed-off-by: Jaroslav Kysela --- src/ucm/parser.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ucm/parser.c b/src/ucm/parser.c index 75b04193..7f7e258d 100644 --- a/src/ucm/parser.c +++ b/src/ucm/parser.c @@ -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; -- 2.47.1