topology: fix tplg_get_integer() - handle errno == ERANGE

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2019-12-14 13:52:18 +01:00
parent 5925a6d870
commit 1047a5f3c0

View file

@ -36,14 +36,19 @@ int tplg_get_integer(snd_config_t *n, int *val, int base)
if (err < 0) if (err < 0)
return err; return err;
if (lval < INT_MIN || lval > INT_MAX) if (lval < INT_MIN || lval > INT_MAX)
return -EINVAL; return -ERANGE;
*val = lval; *val = lval;
return err; return err;
case SND_CONFIG_TYPE_STRING: case SND_CONFIG_TYPE_STRING:
err = snd_config_get_string(n, &str); err = snd_config_get_string(n, &str);
if (err < 0) if (err < 0)
return err; return err;
errno = 0;
*val = strtol(str, NULL, base); *val = strtol(str, NULL, base);
if (errno == ERANGE)
return -ERANGE;
if (errno && *val == 0)
return -EINVAL;
return 0; return 0;
default: default:
return -EINVAL; return -EINVAL;