diff options
author | William Wilgus <wilgus.william@gmail.com> | 2022-12-11 10:19:53 -0500 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2022-12-11 22:17:12 -0500 |
commit | 863538c50a82478f239d634c022bb0b2d0149813 (patch) | |
tree | 25e9030bb8a7c389e58cf59ffab76aa079aa6b2c | |
parent | ac9066dd44a15c32efd5476a6228df05e10d89b0 (diff) | |
download | rockbox-863538c50a.tar.gz rockbox-863538c50a.zip |
[Bug Fix] dsp_proc_enable init race / crash
haas surround is causing a seg fault
it appears process is null see https://www.rockbox.org/tracker/task/13382
for details
when the low_latency_callback is enabled it happens less frequently
lets default to an empty process that way there are no NULL pointers to call
Change-Id: Ib72ba1a58cbb20cef04b5ea50964adadeee74a75
-rw-r--r-- | lib/rbcodec/dsp/dsp_core.c | 9 | ||||
-rw-r--r-- | lib/rbcodec/dsp/dsp_proc_entry.h | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/rbcodec/dsp/dsp_core.c b/lib/rbcodec/dsp/dsp_core.c index b0e9c8a304..5a08ce8e37 100644 --- a/lib/rbcodec/dsp/dsp_core.c +++ b/lib/rbcodec/dsp/dsp_core.c @@ -214,6 +214,13 @@ dsp_proc_enable_delink(struct dsp_config *dsp, uint32_t mask) } } +static void dsp_empty_process(struct dsp_proc_entry *this, struct dsp_buffer **buf_p) +{ + (void)this; + (void)buf_p; + logf("%s", __func__); +} + void dsp_proc_enable(struct dsp_config *dsp, enum dsp_proc_ids id, bool enable) { @@ -236,7 +243,7 @@ void dsp_proc_enable(struct dsp_config *dsp, enum dsp_proc_ids id, { /* New entry - set defaults */ s->proc_entry.data = 0; - s->proc_entry.process = NULL; + s->proc_entry.process = dsp_empty_process; } enabled = proc_db_entry(s)->configure(&s->proc_entry, dsp, diff --git a/lib/rbcodec/dsp/dsp_proc_entry.h b/lib/rbcodec/dsp/dsp_proc_entry.h index a4f7b71f9c..0a65792207 100644 --- a/lib/rbcodec/dsp/dsp_proc_entry.h +++ b/lib/rbcodec/dsp/dsp_proc_entry.h @@ -103,7 +103,7 @@ typedef void (*dsp_proc_fn_type)(struct dsp_proc_entry *this, * * default settings: * .data = 0 - * .process = NULL + * .process = dsp_empty_process (dsp_core.c) * * DSP_PROC_INIT handler just has to change what it needs to change. It may * also be modified at any time to implement the stage's demands. |