diff options
author | orion <orion@FreeBSD.org> | 2003-04-20 17:08:56 +0000 |
---|---|---|
committer | orion <orion@FreeBSD.org> | 2003-04-20 17:08:56 +0000 |
commit | 26bf26a8364945b1a8d703575c9016637f63e73f (patch) | |
tree | ca2af124c6f65c339d3eb396617dd1abc1c3357d /sys/dev/sound/pcm/buffer.c | |
parent | 81d6b311020dc650aa2b900f7a08156ffecedba9 (diff) | |
download | FreeBSD-src-26bf26a8364945b1a8d703575c9016637f63e73f.zip FreeBSD-src-26bf26a8364945b1a8d703575c9016637f63e73f.tar.gz |
Additional malloc failure checks.
Diffstat (limited to 'sys/dev/sound/pcm/buffer.c')
-rw-r--r-- | sys/dev/sound/pcm/buffer.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/sound/pcm/buffer.c b/sys/dev/sound/pcm/buffer.c index 8ae35a3..30e0996 100644 --- a/sys/dev/sound/pcm/buffer.c +++ b/sys/dev/sound/pcm/buffer.c @@ -113,6 +113,7 @@ sndbuf_free(struct snd_dbuf *b) int sndbuf_resize(struct snd_dbuf *b, unsigned int blkcnt, unsigned int blksz) { + u_int8_t *tmpbuf; if (b->maxsize == 0) return 0; if (blkcnt == 0) @@ -126,9 +127,12 @@ sndbuf_resize(struct snd_dbuf *b, unsigned int blkcnt, unsigned int blksz) b->blkcnt = blkcnt; b->blksz = blksz; b->bufsize = blkcnt * blksz; - if (b->tmpbuf) - free(b->tmpbuf, M_DEVBUF); - b->tmpbuf = malloc(b->bufsize, M_DEVBUF, M_NOWAIT); + + tmpbuf = malloc(b->bufsize, M_DEVBUF, M_NOWAIT); + if (tmpbuf == NULL) + return ENOMEM; + free(b->tmpbuf, M_DEVBUF); + b->tmpbuf = tmpbuf; sndbuf_reset(b); return 0; } @@ -144,7 +148,6 @@ sndbuf_remalloc(struct snd_dbuf *b, unsigned int blkcnt, unsigned int blksz) bufsize = blksz * blkcnt; - buf = malloc(bufsize, M_DEVBUF, M_NOWAIT); if (buf == NULL) return ENOMEM; |