summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound/pcm/buffer.c
diff options
context:
space:
mode:
authororion <orion@FreeBSD.org>2003-04-20 17:08:56 +0000
committerorion <orion@FreeBSD.org>2003-04-20 17:08:56 +0000
commit26bf26a8364945b1a8d703575c9016637f63e73f (patch)
treeca2af124c6f65c339d3eb396617dd1abc1c3357d /sys/dev/sound/pcm/buffer.c
parent81d6b311020dc650aa2b900f7a08156ffecedba9 (diff)
downloadFreeBSD-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.c11
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;
OpenPOWER on IntegriCloud