summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGeorg Chini <georg@chini.tk>2021-01-01 21:35:41 +0100
committerGeorg Chini <georg@chini.tk>2021-01-01 20:43:07 +0000
commit81ebd8ba3f644e95a7f858ede9fc65d340ab06e2 (patch)
tree86060241d7babef15270fc8ef67332008bb43f75 /src
parent21a531041ab0b5e52dbde1e3ed4ab8fb49198fda (diff)
downloadpulseaudio-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')
-rw-r--r--src/pulse/message-params.c36
-rw-r--r--src/pulse/message-params.h8
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);
/** @} */