alsa-lib/alsa-git.patch
2021-12-09 10:26:39 +01:00

98 lines
2.8 KiB
Diff

From f44c94f24c2422c5ee1c4c58253ec17412b248a9 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Tue, 7 Dec 2021 09:21:24 +0100
Subject: [PATCH 1/2] conf: accept '_' character in the variable name
Fixes: https://github.com/alsa-project/alsa-lib/issues/197
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
src/confeval.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/confeval.c b/src/confeval.c
index a971bf38..be9ac874 100644
--- a/src/confeval.c
+++ b/src/confeval.c
@@ -190,7 +190,7 @@ int _snd_eval_string(snd_config_t **dst, const char *s,
} else {
e = s + 1;
while (*e) {
- if (!isalnum(*e))
+ if (!isalnum(*e) && *e != '_')
break;
e++;
}
--
2.31.1
From 4b22871ee5a3bbc8eef7039bfc8db5e65ff3895f Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Thu, 9 Dec 2021 10:15:29 +0100
Subject: [PATCH 2/2] conf: fix the device parsing when arguments has no
defaults
The commit bf528b90 sets the value to an empty string which causes
these errors:
pcm_hw.c: Invalid type for device
pcm_hw.c: Invalid type for subdevice
When device arguments (@args) have no default values set,
the field must be skipped to keep the compatibility.
BugLink: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1246
Fixes: https://github.com/alsa-project/alsa-lib/issues/199
Fixes: bf528b90 ("conf: add possibility to evaluate simple integer math expressions")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
src/conf.c | 8 ++++++--
src/confeval.c | 5 +++++
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/conf.c b/src/conf.c
index 0f6d2ba8..d3597cbc 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -4994,8 +4994,10 @@ int snd_config_copy(snd_config_t **dst,
static int _snd_config_expand_vars(snd_config_t **dst, const char *s, void *private_data)
{
snd_config_t *val, *vars = private_data;
- if (snd_config_search(vars, s, &val) < 0)
- return snd_config_make_string(dst, "");
+ if (snd_config_search(vars, s, &val) < 0) {
+ *dst = NULL;
+ return 0;
+ }
return snd_config_copy(dst, val);
}
@@ -5060,6 +5062,8 @@ static int _snd_config_expand(snd_config_t *src,
err = snd_config_evaluate_string(dst, s, fcn, vars);
if (err < 0)
return err;
+ if (*dst == NULL)
+ return 0;
err = snd_config_set_id(*dst, id);
if (err < 0) {
snd_config_delete(*dst);
diff --git a/src/confeval.c b/src/confeval.c
index be9ac874..4a6f8c2e 100644
--- a/src/confeval.c
+++ b/src/confeval.c
@@ -203,6 +203,11 @@ int _snd_eval_string(snd_config_t **dst, const char *s,
free(m);
if (err < 0)
return err;
+ if (tmp == NULL) {
+ err = snd_config_imake_integer(&tmp, NULL, 0);
+ if (err < 0)
+ return err;
+ }
s = e;
}
err = _to_integer(op == LEFT ? &left : &right, tmp);
--
2.31.1