X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=oss_write.c;h=da2539d157ff9f995ae36090d4d434a9b8aa82bc;hp=8426753e1355dcf7424f140e281683ea580eb693;hb=fd652c08d4b5b26032646c449e1979c48018b70a;hpb=f42b5eccb6ec3364dc0500ffeffbe9d9ecab07bd diff --git a/oss_write.c b/oss_write.c index 8426753e..da2539d1 100644 --- a/oss_write.c +++ b/oss_write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Andre Noll + * Copyright (C) 2009-2010 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -53,7 +53,8 @@ static void oss_close(struct writer_node *wn) { struct private_oss_write_data *powd = wn->private_data; - close(powd->fd); + if (powd->fd >= 0) + close(powd->fd); free(powd); } @@ -137,7 +138,7 @@ static int oss_init(struct writer_node *wn, unsigned samplerate, unsigned channe return 1; err: close(powd->fd); - free(powd); + powd->fd = -1; return ret; } @@ -182,7 +183,7 @@ static void oss_post_select(__a_unused struct sched *s, ret = 0; if (!FD_ISSET(powd->fd, &s->wfds)) goto out; - ret = write_nonblock(powd->fd, data, frames * powd->bytes_per_frame, 0); + ret = write_nonblock(powd->fd, data, frames * powd->bytes_per_frame); if (ret < 0) goto out; btr_consume(btrn, ret);