fltr->name should be freed before freeing fltr. Because filter_free()
can never be called from other places without f set, the pa_assert()
can be removed and filter_free() can be used in process() as well.
This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=
1f0c4f7d6af250e1d8dbb020de0f83afcec858b0
Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: I0b7ba3776efafe3453548b710cbf3c3ef5385851
}
static void filter_free(struct filter *f) {
- pa_assert(f);
-
- pa_xfree(f->name);
- pa_xfree(f->group);
- pa_xfree(f);
+ if (f) {
+ pa_xfree(f->name);
+ pa_xfree(f->group);
+ pa_xfree(f);
+ }
}
static const char* should_filter(pa_object *o, bool is_sink_input) {
if (is_duplex_filter(fltr) && !find_paired_master(u, fltr, o, is_sink_input)) {
pa_log_debug("Want group filtering but don't have enough streams.");
+ filter_free(fltr);
return PA_HOOK_OK;
}
pa_xfree(args);
}
- pa_xfree(fltr);
+ filter_free(fltr);
if (!filter) {
pa_log("Unable to load %s", module_name);