aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sio.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sio.c b/sio.c
index 7104e9a..414de7c 100644
--- a/sio.c
+++ b/sio.c
@@ -79,12 +79,14 @@ read_sio(double *left, double *right, size_t n)
{
int done, i;
char *p = (char *)buffer;
- size_t bufsz = samples * par.rchan * sizeof(int16_t);
- size_t rndsz = n * par.rchan * sizeof(int16_t);
+ size_t bufsz, rndsz;
struct data *data;
- if (rndsz > bufsz)
- rndsz = bufsz;
+ if (n > samples)
+ n = samples;
+
+ bufsz = samples * par.rchan * sizeof(int16_t);
+ rndsz = n * par.rchan * sizeof(int16_t);
for (done = 0; bufsz > 0; p += done, bufsz -= done) {
done = sio_read(hdl, p, bufsz);