mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-01 22:58:47 -04:00
Fix the parsing of trailing default values in the "control" module argument.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2092 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
dccf411469
commit
39ba68bcf4
1 changed files with 14 additions and 6 deletions
|
|
@ -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,23 @@ 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) {
|
||||
pa_log("Too many control values passed, %lu expected.", n_control);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (p < n_control) {
|
||||
pa_log("Not enough control values passed, %lu expected, %lu passed.", n_control, p);
|
||||
goto fail;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue