mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
Add support for NULL strings
This commit is contained in:
parent
323c644084
commit
b589b7062d
4 changed files with 16 additions and 7 deletions
|
|
@ -401,9 +401,13 @@ do { \
|
|||
break; \
|
||||
case 's': \
|
||||
{ \
|
||||
char *strval = va_arg(args, char *) ? : ""; \
|
||||
size_t len = strlen(strval); \
|
||||
spa_pod_builder_string_len(builder, strval, len); \
|
||||
char *strval = va_arg(args, char *); \
|
||||
if (strval != NULL) { \
|
||||
size_t len = strlen(strval); \
|
||||
spa_pod_builder_string_len(builder, strval, len); \
|
||||
} \
|
||||
else \
|
||||
spa_pod_builder_none(builder); \
|
||||
break; \
|
||||
} \
|
||||
case 'S': \
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ static inline bool spa_pod_parser_can_collect(struct spa_pod *pod, char type)
|
|||
|
||||
switch (SPA_POD_TYPE(pod)) {
|
||||
case SPA_POD_TYPE_NONE:
|
||||
return type == 'T' || type == 'O' || type == 'V';
|
||||
return type == 'T' || type == 'O' || type == 'V' || type == 's';
|
||||
case SPA_POD_TYPE_BOOL:
|
||||
return type == 'b';
|
||||
case SPA_POD_TYPE_ID:
|
||||
|
|
@ -116,7 +116,9 @@ do { \
|
|||
*va_arg(args, double*) = SPA_POD_VALUE(struct spa_pod_double, pod); \
|
||||
break; \
|
||||
case 's': \
|
||||
*va_arg(args, char**) = SPA_POD_CONTENTS(struct spa_pod_string, pod); \
|
||||
*va_arg(args, char**) = \
|
||||
(pod == NULL || (SPA_POD_TYPE(pod) == SPA_POD_TYPE_NONE) \
|
||||
? NULL : SPA_POD_CONTENTS(struct spa_pod_string, pod)); \
|
||||
break; \
|
||||
case 'S': \
|
||||
{ \
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ static struct spa_dict *pw_spa_dict_copy(struct spa_dict *dict)
|
|||
|
||||
for (i = 0; i < dict->n_items; i++) {
|
||||
items[i].key = strdup(dict->items[i].key);
|
||||
items[i].value = strdup(dict->items[i].value);
|
||||
items[i].value = dict->items[i].value ? strdup(dict->items[i].value) : NULL;
|
||||
}
|
||||
return copy;
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,10 @@ static void print_properties(struct spa_dict *props, char mark)
|
|||
}
|
||||
|
||||
spa_dict_for_each(item, props) {
|
||||
printf("%c\t\t%s = \"%s\"\n", mark, item->key, item->value);
|
||||
if (item->value)
|
||||
printf("%c\t\t%s = \"%s\"\n", mark, item->key, item->value);
|
||||
else
|
||||
printf("%c\t\t%s = (null)\n", mark, item->key);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue