diff --git a/src/pipewire/properties.c b/src/pipewire/properties.c index a513253bc..b09987924 100644 --- a/src/pipewire/properties.c +++ b/src/pipewire/properties.c @@ -411,23 +411,27 @@ static int do_replace(struct pw_properties *properties, const char *key, char *v if (item == NULL) { if (value == NULL) return 0; + add_item(properties, strdup(key), copy ? strdup(value) : value); } else { - if (value && spa_streq(item->value, value)) - goto exit_noupdate; + if (value != NULL) { + if (spa_streq(item->value, value)) + goto exit_noupdate; - if (value == NULL) { - clear_item(item); - remove_item(properties, item); - } else { free((char *) item->value); item->value = copy ? strdup(value) : value; + } else { + clear_item(item); + remove_item(properties, item); } } + return 1; + exit_noupdate: if (!copy) free(value); + return 0; }