From 1024ccde8b38c800b3406e5d25bff947031d1d74 Mon Sep 17 00:00:00 2001 From: Alexandre Ratchov Date: Mon, 15 Jan 2018 18:32:02 +0100 Subject: [PATCH] Handle par->le, par->msb, par->sig as booleans in sio_oss_setpar(). From Tobias Kortkamp . Thanks. --- libsndio/sio_oss.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/libsndio/sio_oss.c b/libsndio/sio_oss.c index 4b32f4a..c44ff60 100644 --- a/libsndio/sio_oss.c +++ b/libsndio/sio_oss.c @@ -398,13 +398,25 @@ sio_oss_setpar(struct sio_hdl *sh, struct sio_par *par) struct sio_oss_hdl *hdl = (struct sio_oss_hdl *)sh; unsigned int i, round, bufsz; int frag_max, frag_shift, frag_count, frag; + unsigned int le, sig, msb; + + le = par->le; + sig = par->sig; + msb = par->msb; + + if (le == ~0U) + le = 0; + if (sig == ~0U) + sig = 0; + if (msb == ~0U) + msb = 0; hdl->fmt = AFMT_S16_LE; for (i = 0; i < sizeof(formats)/sizeof(formats[0]); i++) { if (formats[i].bits == par->bits && - formats[i].le == par->le && - formats[i].sig == par->sig && - formats[i].msb == par->msb) { + formats[i].le == le && + formats[i].sig == sig && + formats[i].msb == msb) { hdl->fmt = formats[i].fmt; break; }