oss/alsa: Do not invoke UB described in 7.15.1.1 (this time for ADC)
Signed-off-by: malc <av1474@comtv.ru>
This commit is contained in:
parent
cbc18261ea
commit
a628b869be
@ -1079,23 +1079,26 @@ static int alsa_read (SWVoiceIn *sw, void *buf, int size)
|
|||||||
|
|
||||||
static int alsa_ctl_in (HWVoiceIn *hw, int cmd, ...)
|
static int alsa_ctl_in (HWVoiceIn *hw, int cmd, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
|
||||||
int poll_mode;
|
|
||||||
ALSAVoiceIn *alsa = (ALSAVoiceIn *) hw;
|
ALSAVoiceIn *alsa = (ALSAVoiceIn *) hw;
|
||||||
|
|
||||||
va_start (ap, cmd);
|
|
||||||
poll_mode = va_arg (ap, int);
|
|
||||||
va_end (ap);
|
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case VOICE_ENABLE:
|
case VOICE_ENABLE:
|
||||||
ldebug ("enabling voice\n");
|
{
|
||||||
if (poll_mode && alsa_poll_in (hw)) {
|
va_list ap;
|
||||||
poll_mode = 0;
|
int poll_mode;
|
||||||
}
|
|
||||||
hw->poll_mode = poll_mode;
|
|
||||||
|
|
||||||
return alsa_voice_ctl (alsa->handle, "capture", 0);
|
va_start (ap, cmd);
|
||||||
|
poll_mode = va_arg (ap, int);
|
||||||
|
va_end (ap);
|
||||||
|
|
||||||
|
ldebug ("enabling voice\n");
|
||||||
|
if (poll_mode && alsa_poll_in (hw)) {
|
||||||
|
poll_mode = 0;
|
||||||
|
}
|
||||||
|
hw->poll_mode = poll_mode;
|
||||||
|
|
||||||
|
return alsa_voice_ctl (alsa->handle, "capture", 0);
|
||||||
|
}
|
||||||
|
|
||||||
case VOICE_DISABLE:
|
case VOICE_DISABLE:
|
||||||
ldebug ("disabling voice\n");
|
ldebug ("disabling voice\n");
|
||||||
|
@ -781,20 +781,23 @@ static int oss_read (SWVoiceIn *sw, void *buf, int size)
|
|||||||
|
|
||||||
static int oss_ctl_in (HWVoiceIn *hw, int cmd, ...)
|
static int oss_ctl_in (HWVoiceIn *hw, int cmd, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
|
||||||
int poll_mode;
|
|
||||||
OSSVoiceIn *oss = (OSSVoiceIn *) hw;
|
OSSVoiceIn *oss = (OSSVoiceIn *) hw;
|
||||||
|
|
||||||
va_start (ap, cmd);
|
|
||||||
poll_mode = va_arg (ap, int);
|
|
||||||
va_end (ap);
|
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case VOICE_ENABLE:
|
case VOICE_ENABLE:
|
||||||
if (poll_mode && oss_poll_in (hw)) {
|
{
|
||||||
poll_mode = 0;
|
va_list ap;
|
||||||
|
int poll_mode;
|
||||||
|
|
||||||
|
va_start (ap, cmd);
|
||||||
|
poll_mode = va_arg (ap, int);
|
||||||
|
va_end (ap);
|
||||||
|
|
||||||
|
if (poll_mode && oss_poll_in (hw)) {
|
||||||
|
poll_mode = 0;
|
||||||
|
}
|
||||||
|
hw->poll_mode = poll_mode;
|
||||||
}
|
}
|
||||||
hw->poll_mode = poll_mode;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VOICE_DISABLE:
|
case VOICE_DISABLE:
|
||||||
|
Loading…
Reference in New Issue
Block a user