Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
devel:ARM:Factory:Contrib:ILP32
alsa
0010-control-ctlparse-fix-enum-values-in-or.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0010-control-ctlparse-fix-enum-values-in-or.patch of Package alsa
From a3ca4803cb8db73d01231c69620e2d18573ffba9 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela <perex@perex.cz> Date: Mon, 27 Jul 2020 13:18:20 +0200 Subject: [PATCH 10/32] control: ctlparse - fix enum values in '' or "" This comit fixes the enum value string parser (fixes aaf3a081bff1cc85635f7a3c3d4287c4addbbd84). BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/40 Signed-off-by: Jaroslav Kysela <perex@perex.cz> --- src/control/ctlparse.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/control/ctlparse.c b/src/control/ctlparse.c index ee1e0602cbf7..74f76cca9ca4 100644 --- a/src/control/ctlparse.c +++ b/src/control/ctlparse.c @@ -282,23 +282,27 @@ static int get_ctl_enum_item_index(snd_ctl_t *handle, if (items <= 0) return -1; + end = *ptr; + if (end == '\'' || end == '"') + ptr++; + else + end = '\0'; + for (i = 0; i < items; i++) { snd_ctl_elem_info_set_item(info, i); if (snd_ctl_elem_info(handle, info) < 0) return -1; name = snd_ctl_elem_info_get_item_name(info); - end = *ptr; - if (end == '\'' || end == '"') - ptr++; - else - end = '\0'; len = strlen(name); - if (strncmp(name, ptr, len) == 0) { - if (ptr[len] == end || ptr[len] == ',' || ptr[len] == '\n') { - ptr += len; - *ptrp = ptr; - return i; - } + if (strncmp(name, ptr, len)) + continue; + if (end == '\0' && (ptr[len] == '\0' || ptr[len] == ',' || ptr[len] == '\n')) { + *ptrp = ptr + len; + return i; + } + if (end != '\0' && ptr[len] == end) { + *ptrp = ptr + len + 1; + return i; } } return -1; -- 2.16.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor