At Wed, 5 Oct 2011 15:25:44 +0800, Raymond Yau wrote:
2011/10/3 Takashi Iwai tiwai@suse.de:
At Sat, 1 Oct 2011 11:30:44 +0800, Raymond Yau wrote:
There is assertion when specify iface=PCM or iface=PCM,name='' when using amixer -c0 cget
according to the synthax
[[iface=<iface>,][name='name',][index=<index>,][device=<device>,][subdevice=<subdevice>]]|[numid=<numid>]
amixer -c0 cget iface=PCM amixer: control.c:258: snd_ctl_elem_info: Assertion `ctl && info && (info->id.name[0] || info->id.numid)' failed. Aborted
amixer -c0 cget iface=PCM,name='' amixer: control.c:258: snd_ctl_elem_info: Assertion `ctl && info && (info->id.name[0] || info->id.numid)' failed. Aborted
So, the empty string isn't checked before assert(). It's bad. It must be easy to fix. Care to create and send a patch?
The syntax seem also wrong.
[[iface=<iface>,][name='name',][index=<index>,][device=<device>,][subdevice=subdevice>]]|[numid=<numid>]
it should be [numid=<numid>] | [[iface=<iface>,name='name'][,index=<index>][,device=<device>]] | [[iface=<iface>,name='name'][,device=<device>][,subdevice=<subdevice>]]
since you cannot specify index and subdevice at the same time
The index and subdevice are different things. Typically, the index is set > 0 when multiple elements with the same iface and name are present. The subdevice is rather specification of the device itself, e.g. PCM substream number.
Takashi