mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-03 09:01:52 -05:00
Search functions supports NULL result (check the presence)
This commit is contained in:
parent
45cfa1405f
commit
355bb478e9
1 changed files with 13 additions and 9 deletions
22
src/conf.c
22
src/conf.c
|
|
@ -1417,7 +1417,7 @@ int snd_config_searchv(snd_config_t *config,
|
|||
{
|
||||
snd_config_t *n;
|
||||
va_list arg;
|
||||
assert(config && result);
|
||||
assert(config);
|
||||
va_start(arg, result);
|
||||
while (1) {
|
||||
const char *k = va_arg(arg, const char *);
|
||||
|
|
@ -1430,7 +1430,8 @@ int snd_config_searchv(snd_config_t *config,
|
|||
config = n;
|
||||
}
|
||||
va_end(arg);
|
||||
*result = n;
|
||||
if (result)
|
||||
*result = n;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1449,23 +1450,26 @@ int snd_config_search_alias(snd_config_t *config,
|
|||
const char *base, const char *key,
|
||||
snd_config_t **result)
|
||||
{
|
||||
snd_config_t *res;
|
||||
int err;
|
||||
assert(config && key && result);
|
||||
assert(config && key);
|
||||
if (base) {
|
||||
err = snd_config_searchv(config, result, base, key, 0);
|
||||
err = snd_config_searchv(config, &res, base, key, 0);
|
||||
if (err < 0)
|
||||
return err;
|
||||
while (snd_config_get_string(*result, &key) >= 0 &&
|
||||
snd_config_searchv(config, result, base, key, 0) >= 0)
|
||||
while (snd_config_get_string(res, &key) >= 0 &&
|
||||
snd_config_searchv(config, &res, base, key, 0) >= 0)
|
||||
;
|
||||
} else {
|
||||
err = snd_config_search(config, key, result);
|
||||
err = snd_config_search(config, key, &res);
|
||||
if (err < 0)
|
||||
return err;
|
||||
while (snd_config_get_string(*result, &key) >= 0 &&
|
||||
snd_config_search(config, key, result) >= 0)
|
||||
while (snd_config_get_string(res, &key) >= 0 &&
|
||||
snd_config_search(config, key, &res) >= 0)
|
||||
;
|
||||
}
|
||||
if (result)
|
||||
*result = res;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue