From 71e0cfb5fa63223aa209f8beb80a05c6bcb157a8 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 2 Jun 2021 15:19:19 +1000 Subject: [PATCH] pipewire: allow NULL pointers in pw_free_strv() Just like the real free() we should just ignore a NULL pointer, makes the caller code easier for those instances where properties are optional. --- .../module-protocol-pulse/modules/module-combine-sink.c | 6 ++---- src/modules/spa/module-device.c | 3 +-- src/modules/spa/module-node.c | 3 +-- src/pipewire/pipewire.c | 6 ++---- src/pipewire/utils.c | 4 ++++ 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/modules/module-protocol-pulse/modules/module-combine-sink.c b/src/modules/module-protocol-pulse/modules/module-combine-sink.c index 8d3f61ffd..282cd8106 100644 --- a/src/modules/module-protocol-pulse/modules/module-combine-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-combine-sink.c @@ -384,8 +384,7 @@ static int module_combine_sink_unload(struct client *client, struct module *modu pw_manager_destroy(d->manager); if (d->core != NULL) pw_core_disconnect(d->core); - if (d->sink_names) - pw_free_strv(d->sink_names); + pw_free_strv(d->sink_names); free(d->sink_name); return 0; @@ -462,8 +461,7 @@ struct module *create_module_combine_sink(struct impl *impl, const char *argumen return module; out: pw_properties_free(props); - if (sink_names) - pw_free_strv(sink_names); + pw_free_strv(sink_names); errno = -res; return NULL; diff --git a/src/modules/spa/module-device.c b/src/modules/spa/module-device.c index 9538b9608..886237fde 100644 --- a/src/modules/spa/module-device.c +++ b/src/modules/spa/module-device.c @@ -117,7 +117,6 @@ error_arguments: pw_log_error("usage: module-spa-device " MODULE_USAGE); goto error_exit_cleanup; error_exit_cleanup: - if (argv) - pw_free_strv(argv); + pw_free_strv(argv); return res; } diff --git a/src/modules/spa/module-node.c b/src/modules/spa/module-node.c index 6b83aaff4..d67219f60 100644 --- a/src/modules/spa/module-node.c +++ b/src/modules/spa/module-node.c @@ -119,7 +119,6 @@ error_arguments: pw_log_error("usage: module-spa-node " MODULE_USAGE); goto error_exit_cleanup; error_exit_cleanup: - if (argv) - pw_free_strv(argv); + pw_free_strv(argv); return res; } diff --git a/src/pipewire/pipewire.c b/src/pipewire/pipewire.c index 15ce5fd6e..ad9f1aa11 100644 --- a/src/pipewire/pipewire.c +++ b/src/pipewire/pipewire.c @@ -221,8 +221,7 @@ static void configure_debug(struct support *support, const char *str) if (n_tokens > 1) support->categories = pw_split_strv(level[1], ",", INT_MAX, &n_tokens); - if (level) - pw_free_strv(level); + pw_free_strv(level); } SPA_EXPORT @@ -564,8 +563,7 @@ void pw_deinit(void) unref_handle(h); unref_plugin(p); } - if (support->categories) - pw_free_strv(support->categories); + pw_free_strv(support->categories); free(support->i18n_domain); spa_zero(global_support); spa_zero(global_registry); diff --git a/src/pipewire/utils.c b/src/pipewire/utils.c index 2b08a1895..2cf1f9733 100644 --- a/src/pipewire/utils.c +++ b/src/pipewire/utils.c @@ -99,6 +99,10 @@ SPA_EXPORT void pw_free_strv(char **str) { int i; + + if (str == NULL) + return; + for (i = 0; str[i]; i++) free(str[i]); free(str);