if (err < 0) {
uc_error("error: %s failed to parse verb",
file);
- return err;
+ goto _err;
}
continue;
}
if (err < 0) {
uc_error("error: %s failed to parse device",
file);
- return err;
+ goto _err;
}
continue;
}
if (err < 0) {
uc_error("error: %s failed to parse modifier",
file);
- return err;
+ goto _err;
}
continue;
}
}
+ snd_config_delete(cfg);
+
/* use case verb must have at least 1 device */
if (list_empty(&verb->device_list)) {
uc_error("error: no use case device defined", file);
return -EINVAL;
}
return 0;
+
+ _err:
+ snd_config_delete(cfg);
+ return err;
}
/*
return -1;
}
+
static int load_master_config(const char *card_name, snd_config_t **cfg)
{
char filename[MAX_FILE];
}
free(namelist);
- if (err >= 0)
+ if (err >= 0) {
*_list = list;
+ } else {
+ free(list);
+ }
return err;
}
int err;
fp = fopen(file, "r");
- err = fp == NULL ? -errno : snd_input_stdio_attach(&in, fp, 1);
- if (err < 0) {
+ if (!fp) {
+ err = -errno;
+ __err0:
uc_error("could not open configuration file %s", file);
return err;
}
+ err = snd_input_stdio_attach(&in, fp, 1);
+ if (err < 0)
+ goto __err0;
err = snd_config_top(&top);
if (err < 0)
- return err;
+ goto __err1;
default_path = getenv(ALSA_CONFIG_UCM_VAR);
if (!default_path || !*default_path)
__err2:
snd_config_delete(top);
+ __err1:
+ snd_input_close(in);
return err;
}