From 408af4b6756fc3214dbd5c3641bc11bb4e680ee2 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 16 Nov 2007 12:06:43 +0100 Subject: [PATCH] Fix wrong return values in direct plugins Fixed the codes returning error values that are not set properly via errno. --- src/pcm/pcm_direct.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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; -- 2.47.1