mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05: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 *) ? : "";			\
 | 
			
		||||
		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) {
 | 
			
		||||
		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