ALSA: jack: Fix endless loop at unique index detection
While the commit [d0a601c278de: ALSA: jack: Fix the id uniqueness check] fixes the wrong string check, it leads to a worse result -- the loop in get_available_index() goes into an endless loop. The cause is that snd_ctl_find_id() returns the object assigned to the numid if it's set. Thus it points to the previous entry again. This patch clears the numid field for the next call properly. Reported-and-tested-by: Tomáš Pružina <pruzinat@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
650474fb73
commit
7378bc2f19
|
@ -41,8 +41,11 @@ static int get_available_index(struct snd_card *card, const char *name)
|
|||
sid.iface = SNDRV_CTL_ELEM_IFACE_CARD;
|
||||
strlcpy(sid.name, name, sizeof(sid.name));
|
||||
|
||||
while (snd_ctl_find_id(card, &sid))
|
||||
while (snd_ctl_find_id(card, &sid)) {
|
||||
sid.index++;
|
||||
/* reset numid; otherwise snd_ctl_find_id() hits this again */
|
||||
sid.numid = 0;
|
||||
}
|
||||
|
||||
return sid.index;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue