summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2022-12-11 10:19:53 -0500
committerWilliam Wilgus <me.theuser@yahoo.com>2022-12-11 22:17:12 -0500
commit863538c50a82478f239d634c022bb0b2d0149813 (patch)
tree25e9030bb8a7c389e58cf59ffab76aa079aa6b2c
parentac9066dd44a15c32efd5476a6228df05e10d89b0 (diff)
downloadrockbox-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.c9
-rw-r--r--lib/rbcodec/dsp/dsp_proc_entry.h2
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.