Don't crash if alsa_snd_pcm_poll_descriptors fails

This commit is contained in:
Daniel Schürmann 2020-11-12 00:25:34 +01:00
commit ccc88607b6

View file

@ -3642,8 +3642,11 @@ static PaError PaAlsaStreamComponent_BeginPolling( PaAlsaStreamComponent* self,
PaError result = paNoError; PaError result = paNoError;
int ret = alsa_snd_pcm_poll_descriptors( self->pcm, pfds, self->nfds ); int ret = alsa_snd_pcm_poll_descriptors( self->pcm, pfds, self->nfds );
(void)ret; /* Prevent unused variable warning if asserts are turned off */ (void)ret; /* Prevent unused variable warning if asserts are turned off */
assert( ret == self->nfds ); /* If alsa returns anything else, like -EPIPE return*/
if( ret != self->nfds )
{
return paUnanticipatedHostError;
}
self->ready = 0; self->ready = 0;
return result; return result;
@ -3810,7 +3813,12 @@ static PaError PaAlsaStream_WaitForFrames( PaAlsaStream *self, unsigned long *fr
{ {
/* self->pfds is in effect an array of fds; if necessary, index past the capture fds */ /* self->pfds is in effect an array of fds; if necessary, index past the capture fds */
playbackPfds = self->pfds + (pollCapture ? self->capture.nfds : 0); playbackPfds = self->pfds + (pollCapture ? self->capture.nfds : 0);
PA_ENSURE( PaAlsaStreamComponent_BeginPolling( &self->playback, playbackPfds ) ); int res = PaAlsaStreamComponent_BeginPolling( &self->playback, playbackPfds );
if( res != paNoError)
{
xrun = 1;
goto end;
}
totalFds += self->playback.nfds; totalFds += self->playback.nfds;
} }