From: Takashi Iwai Date: Fri, 16 Nov 2007 11:06:43 +0000 (+0100) Subject: Fix wrong return values in direct plugins X-Git-Tag: v1.0.16rc1~50 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=408af4b6756fc3214dbd5c3641bc11bb4e680ee2;p=alsa-lib.git Fix wrong return values in direct plugins Fixed the codes returning error values that are not set properly via errno. --- diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c index d80a41c2..519ec02e 100644 --- a/src/pcm/pcm_direct.c +++ b/src/pcm/pcm_direct.c @@ -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;