mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-02 09:01:46 -05:00
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>
This commit is contained in:
parent
21a531041a
commit
81ebd8ba3f
2 changed files with 20 additions and 24 deletions
|
|
@ -345,9 +345,9 @@ int pa_message_params_read_bool(char *c, bool *result, void **state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Converts a parameter list to a string array. */
|
/* Converts a parameter list to a string array. */
|
||||||
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) {
|
||||||
void *state = NULL;
|
void *state1 = NULL;
|
||||||
uint32_t element_count, i;
|
int element_count, i;
|
||||||
int err;
|
int err;
|
||||||
const char **values;
|
const char **values;
|
||||||
char *start_pos;
|
char *start_pos;
|
||||||
|
|
@ -370,8 +370,7 @@ int pa_message_params_read_string_array(char *c, const char ***results, int *len
|
||||||
/* Allocate array */
|
/* Allocate array */
|
||||||
values = pa_xmalloc0(element_count * sizeof(char *));
|
values = pa_xmalloc0(element_count * sizeof(char *));
|
||||||
|
|
||||||
state = NULL;
|
for (i = 0; (err = pa_message_params_read_string(start_pos, &(values[i]), &state1)) > 0; i++)
|
||||||
for (i = 0; (err = pa_message_params_read_string(start_pos, &(values[i]), &state)) > 0; i++)
|
|
||||||
;
|
;
|
||||||
|
|
||||||
if (err < 0) {
|
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. */
|
/* 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;
|
double *values;
|
||||||
void *state = NULL;
|
void *state1 = NULL;
|
||||||
uint32_t element_count, i;
|
int element_count, i;
|
||||||
int err;
|
int err;
|
||||||
char *start_pos;
|
char *start_pos;
|
||||||
|
|
||||||
|
|
@ -411,8 +410,7 @@ int pa_message_params_read_double_array(char *c, double **results, int *length)
|
||||||
/* Allocate array */
|
/* Allocate array */
|
||||||
values = pa_xmalloc0(element_count * sizeof(double));
|
values = pa_xmalloc0(element_count * sizeof(double));
|
||||||
|
|
||||||
state = NULL;
|
for (i = 0; (err = pa_message_params_read_double(start_pos, &(values[i]), &state1)) > 0; i++)
|
||||||
for (i = 0; (err = pa_message_params_read_double(start_pos, &(values[i]), &state)) > 0; i++)
|
|
||||||
;
|
;
|
||||||
|
|
||||||
if (err < 0) {
|
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. */
|
/* 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;
|
int64_t *values;
|
||||||
void *state = NULL;
|
void *state1 = NULL;
|
||||||
uint32_t element_count, i;
|
int element_count, i;
|
||||||
int err;
|
int err;
|
||||||
char *start_pos;
|
char *start_pos;
|
||||||
|
|
||||||
|
|
@ -452,8 +450,7 @@ int pa_message_params_read_int64_array(char *c, int64_t **results, int *length)
|
||||||
/* Allocate array */
|
/* Allocate array */
|
||||||
values = pa_xmalloc0(element_count * sizeof(int64_t));
|
values = pa_xmalloc0(element_count * sizeof(int64_t));
|
||||||
|
|
||||||
state = NULL;
|
for (i = 0; (err = pa_message_params_read_int64(start_pos, &(values[i]), &state1)) > 0; i++)
|
||||||
for (i = 0; (err = pa_message_params_read_int64(start_pos, &(values[i]), &state)) > 0; i++)
|
|
||||||
;
|
;
|
||||||
|
|
||||||
if (err < 0) {
|
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. */
|
/* 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;
|
uint64_t *values;
|
||||||
void *state = NULL;
|
void *state1 = NULL;
|
||||||
uint32_t element_count, i;
|
int element_count, i;
|
||||||
int err;
|
int err;
|
||||||
char *start_pos;
|
char *start_pos;
|
||||||
|
|
||||||
|
|
@ -493,8 +490,7 @@ int pa_message_params_read_uint64_array(char *c, uint64_t **results, int *length
|
||||||
/* Allocate array */
|
/* Allocate array */
|
||||||
values = pa_xmalloc0(element_count * sizeof(uint64_t));
|
values = pa_xmalloc0(element_count * sizeof(uint64_t));
|
||||||
|
|
||||||
state = NULL;
|
for (i = 0; (err = pa_message_params_read_uint64(start_pos, &(values[i]), &state1)) > 0; i++)
|
||||||
for (i = 0; (err = pa_message_params_read_uint64(start_pos, &(values[i]), &state)) > 0; i++)
|
|
||||||
;
|
;
|
||||||
|
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
|
|
||||||
|
|
@ -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
|
/** 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.
|
* 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 */
|
* 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 */
|
/** Read an integer from parameter list in c. \since 15.0 */
|
||||||
int pa_message_params_read_int64(char *c, int64_t *result, void **state);
|
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
|
/** 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.
|
* 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 */
|
* 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
|
/** 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 */
|
* 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
|
* 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
|
* *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 */
|
* 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 */
|
/** 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);
|
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
|
/** 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.
|
* 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 */
|
* 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);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue