mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-03 09:01:50 -05:00
alsa-mixer: Get rid of a compiler warning.
On 64-bit systems LONG_MAX is greater than the largest possible value of a uint32_t variable, which caused the compiler to warn about a comparison that is always false. On 32-bit systems pa_atou() can return a value that will overflow when assigned to e->volume_limit, which has type long, so the comparison was necessary. This dilemma is resolved by using pa_atol() instead of pa_atou().
This commit is contained in:
parent
60f191941b
commit
77da2c4bcf
3 changed files with 26 additions and 10 deletions
|
|
@ -2012,20 +2012,13 @@ char *pa_state_path(const char *fn, pa_bool_t appendmid) {
|
|||
|
||||
/* Convert the string s to a signed integer in *ret_i */
|
||||
int pa_atoi(const char *s, int32_t *ret_i) {
|
||||
char *x = NULL;
|
||||
long l;
|
||||
|
||||
pa_assert(s);
|
||||
pa_assert(ret_i);
|
||||
|
||||
errno = 0;
|
||||
l = strtol(s, &x, 0);
|
||||
|
||||
if (!x || *x || errno) {
|
||||
if (!errno)
|
||||
errno = EINVAL;
|
||||
if (pa_atol(s, &l) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((int32_t) l != l) {
|
||||
errno = ERANGE;
|
||||
|
|
@ -2064,6 +2057,28 @@ int pa_atou(const char *s, uint32_t *ret_u) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Convert the string s to a signed long integer in *ret_l. */
|
||||
int pa_atol(const char *s, long *ret_l) {
|
||||
char *x = NULL;
|
||||
long l;
|
||||
|
||||
pa_assert(s);
|
||||
pa_assert(ret_l);
|
||||
|
||||
errno = 0;
|
||||
l = strtol(s, &x, 0);
|
||||
|
||||
if (!x || *x || errno) {
|
||||
if (!errno)
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
*ret_l = l;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_STRTOF_L
|
||||
static locale_t c_locale = NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue