diff options
author | Georg Chini <georg@chini.tk> | 2021-01-01 21:35:41 +0100 |
---|---|---|
committer | Georg Chini <georg@chini.tk> | 2021-01-01 20:43:07 +0000 |
commit | 81ebd8ba3f644e95a7f858ede9fc65d340ab06e2 (patch) | |
tree | 86060241d7babef15270fc8ef67332008bb43f75 /src/pulse | |
parent | 21a531041ab0b5e52dbde1e3ed4ab8fb49198fda (diff) | |
download | pulseaudio-81ebd8ba3f644e95a7f858ede9fc65d340ab06e2.tar.gz |
message-params: Fix array reading functions
The array read functions need the state pointer as an additional argument because the
array may be in the middle of a parameter list and the state pointer must be advanced
to the element after the array.
Additionally fixes some compiler warnings.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/450>
Diffstat (limited to 'src/pulse')
-rw-r--r-- | src/pulse/message-params.c | 36 | ||||
-rw-r--r-- | src/pulse/message-params.h | 8 |
2 files changed, 20 insertions, 24 deletions
diff --git a/src/pulse/message-params.c b/src/pulse/message-params.c index ae2ed8b68..99402ebc2 100644 --- a/src/pulse/message-params.c +++ b/src/pulse/message-params.c @@ -345,9 +345,9 @@ int pa_message_params_read_bool(char *c, bool *result, void **state) { } /* Converts a parameter list to a string array. */ -int pa_message_params_read_string_array(char *c, const char ***results, int *length) { - void *state = NULL; - uint32_t element_count, i; +int pa_message_params_read_string_array(char *c, const char ***results, int *length, void **state) { + void *state1 = NULL; + int element_count, i; int err; const char **values; char *start_pos; @@ -370,8 +370,7 @@ int pa_message_params_read_string_array(char *c, const char ***results, int *len /* Allocate array */ values = pa_xmalloc0(element_count * sizeof(char *)); - state = NULL; - for (i = 0; (err = pa_message_params_read_string(start_pos, &(values[i]), &state)) > 0; i++) + for (i = 0; (err = pa_message_params_read_string(start_pos, &(values[i]), &state1)) > 0; i++) ; if (err < 0) { @@ -386,10 +385,10 @@ int pa_message_params_read_string_array(char *c, const char ***results, int *len } /* Converts a parameter list to a double array. */ -int pa_message_params_read_double_array(char *c, double **results, int *length) { +int pa_message_params_read_double_array(char *c, double **results, int *length, void **state) { double *values; - void *state = NULL; - uint32_t element_count, i; + void *state1 = NULL; + int element_count, i; int err; char *start_pos; @@ -411,8 +410,7 @@ int pa_message_params_read_double_array(char *c, double **results, int *length) /* Allocate array */ values = pa_xmalloc0(element_count * sizeof(double)); - state = NULL; - for (i = 0; (err = pa_message_params_read_double(start_pos, &(values[i]), &state)) > 0; i++) + for (i = 0; (err = pa_message_params_read_double(start_pos, &(values[i]), &state1)) > 0; i++) ; if (err < 0) { @@ -427,10 +425,10 @@ int pa_message_params_read_double_array(char *c, double **results, int *length) } /* Converts a parameter list to an int64 array. */ -int pa_message_params_read_int64_array(char *c, int64_t **results, int *length) { +int pa_message_params_read_int64_array(char *c, int64_t **results, int *length, void **state) { int64_t *values; - void *state = NULL; - uint32_t element_count, i; + void *state1 = NULL; + int element_count, i; int err; char *start_pos; @@ -452,8 +450,7 @@ int pa_message_params_read_int64_array(char *c, int64_t **results, int *length) /* Allocate array */ values = pa_xmalloc0(element_count * sizeof(int64_t)); - state = NULL; - for (i = 0; (err = pa_message_params_read_int64(start_pos, &(values[i]), &state)) > 0; i++) + for (i = 0; (err = pa_message_params_read_int64(start_pos, &(values[i]), &state1)) > 0; i++) ; if (err < 0) { @@ -468,10 +465,10 @@ int pa_message_params_read_int64_array(char *c, int64_t **results, int *length) } /* Converts a parameter list to an uint64 array. */ -int pa_message_params_read_uint64_array(char *c, uint64_t **results, int *length) { +int pa_message_params_read_uint64_array(char *c, uint64_t **results, int *length, void **state) { uint64_t *values; - void *state = NULL; - uint32_t element_count, i; + void *state1 = NULL; + int element_count, i; int err; char *start_pos; @@ -493,8 +490,7 @@ int pa_message_params_read_uint64_array(char *c, uint64_t **results, int *length /* Allocate array */ values = pa_xmalloc0(element_count * sizeof(uint64_t)); - state = NULL; - for (i = 0; (err = pa_message_params_read_uint64(start_pos, &(values[i]), &state)) > 0; i++) + for (i = 0; (err = pa_message_params_read_uint64(start_pos, &(values[i]), &state1)) > 0; i++) ; if (err < 0) { diff --git a/src/pulse/message-params.h b/src/pulse/message-params.h index 18addee96..3e53c1e84 100644 --- a/src/pulse/message-params.h +++ b/src/pulse/message-params.h @@ -77,7 +77,7 @@ int pa_message_params_read_double(char *c, double *result, void **state); /** Converts a parameter list to a double array. Empty elements in the parameter * list are treated as error. Returns allocated array in *results and array size in *length. * The returned array must be freed with pa_xfree(). \since 15.0 */ -int pa_message_params_read_double_array(char *c, double **results, int *length); +int pa_message_params_read_double_array(char *c, double **results, int *length, void **state); /** Read an integer from parameter list in c. \since 15.0 */ int pa_message_params_read_int64(char *c, int64_t *result, void **state); @@ -85,7 +85,7 @@ int pa_message_params_read_int64(char *c, int64_t *result, void **state); /** Converts a parameter list to an int64 array. Empty elements in the parameter * list are treated as error. Returns allocated array in *results and array size in *length. * The returned array must be freed with pa_xfree(). \since 15.0 */ -int pa_message_params_read_int64_array(char *c, int64_t **results, int *length); +int pa_message_params_read_int64_array(char *c, int64_t **results, int *length, void **state); /** Read raw data from parameter list in c. Used to split a message parameter * string into list elements. The string returned in *result must not be freed. \since 15.0 */ @@ -99,7 +99,7 @@ int pa_message_params_read_string(char *c, const char **result, void **state); * the strings. Returns allocated array of pointers to sub-strings within c in * *results and stores array size in *length. The returned array must be * freed with pa_xfree(), but not the strings within the array. \since 15.0 */ -int pa_message_params_read_string_array(char *c, const char ***results, int *length); +int pa_message_params_read_string_array(char *c, const char ***results, int *length, void **state); /** Read an unsigned integer from parameter list in c. \since 15.0 */ int pa_message_params_read_uint64(char *c, uint64_t *result, void **state); @@ -107,7 +107,7 @@ int pa_message_params_read_uint64(char *c, uint64_t *result, void **state); /** Converts a parameter list to an uint64 array. Empty elements in the parameter * list are treated as error. Returns allocated array in *results and array size in *length. * The returned array must be freed with pa_xfree(). \since 15.0 */ -int pa_message_params_read_uint64_array(char *c, uint64_t **results, int *length); +int pa_message_params_read_uint64_array(char *c, uint64_t **results, int *length, void **state); /** @} */ |