}
break;
case SND_CONFIG_TYPE_STRING:
- *ascii = strdup(config->u.string);
+ if (config->u.string)
+ *ascii = strdup(config->u.string);
+ else {
+ *ascii = NULL;
+ return 0;
+ }
break;
default:
return -EINVAL;
err = snd_determine_driver(card, &fdriver);
if (err < 0)
return err;
- err = snd_config_imake_string(&private_data, "string", fdriver);
- if (err < 0)
- goto __err;
if (snd_config_search(root, fdriver, &n) >= 0) {
if (snd_config_get_string(n, &driver) < 0)
continue;
} else {
driver = fdriver;
}
+ err = snd_config_imake_string(&private_data, "string", driver);
+ if (err < 0)
+ goto __err;
err = snd_config_hook_load(root, config, &n, private_data);
__err:
if (private_data)