From cc59e76b736fb122a0747e6707ebbee34ea6e64f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 27 Mar 2008 23:22:57 +0000 Subject: merge r2092,r2093,r2094,r2152 from trunk git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/prepare-0.9.10@2153 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/modules/module-ladspa-sink.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c index d4351b2f..fcfeffd5 100644 --- a/src/modules/module-ladspa-sink.c +++ b/src/modules/module-ladspa-sink.c @@ -441,7 +441,7 @@ int pa__init(pa_module*m) { use_default = pa_xnew(pa_bool_t, n_control); p = 0; - while ((k = pa_split(cdata, ",", &state))) { + while ((k = pa_split(cdata, ",", &state)) && p < n_control) { float f; if (*k == 0) { @@ -458,15 +458,24 @@ int pa__init(pa_module*m) { pa_xfree(k); - if (p >= n_control) { - pa_log("Too many control values passed, %lu expected.", n_control); - goto fail; - } - use_default[p] = FALSE; u->control[p++] = f; } + /* The previous loop doesn't take the last control value into account + if it is left empty, so we do it here. */ + if (*cdata == 0 || cdata[strlen(cdata) - 1] == ',') { + if (p < n_control) + use_default[p] = TRUE; + p++; + } + + if (p > n_control || k) { + pa_log("Too many control values passed, %lu expected.", n_control); + pa_xfree(k); + goto fail; + } + if (p < n_control) { pa_log("Not enough control values passed, %lu expected, %lu passed.", n_control, p); goto fail; -- cgit