[alsa-cvslog] alsa-lib: Fix wrong return values in direct plugins
Brought to you by:
perex
From: Takashi I. <ti...@su...> - 2007-11-16 11:06:48
|
changeset: 2349:7330dde50d0b tag: tip user: tiwai date: Fri Nov 16 12:06:43 2007 +0100 files: src/pcm/pcm_direct.c description: Fix wrong return values in direct plugins Fixed the codes returning error values that are not set properly via errno. diff -r 95e6e03f2e9d -r 7330dde50d0b src/pcm/pcm_direct.c --- a/src/pcm/pcm_direct.c Mon Nov 12 12:01:16 2007 +0100 +++ b/src/pcm/pcm_direct.c Fri Nov 16 12:06:43 2007 +0100 @@ -109,13 +109,15 @@ retryget: } dmix->shmptr = shmat(dmix->shmid, 0, 0); if (dmix->shmptr == (void *) -1) { + err = -errno; snd_pcm_direct_shm_discard(dmix); - return -errno; + return err; } mlock(dmix->shmptr, sizeof(snd_pcm_direct_share_t)); if (shmctl(dmix->shmid, IPC_STAT, &buf) < 0) { + err = -errno; snd_pcm_direct_shm_discard(dmix); - return -errno; + return err; } if (buf.shm_nattch == 1) { /* we're the first user, clear the segment */ memset(dmix->shmptr, 0, sizeof(snd_pcm_direct_share_t)); @@ -128,7 +130,7 @@ retryget: } else { if (dmix->shmptr->magic != SND_PCM_DIRECT_MAGIC) { snd_pcm_direct_shm_discard(dmix); - return -errno; + return -EINVAL; } } return 0; |