summaryrefslogtreecommitdiffstats
path: root/sbc/sbcenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbc/sbcenc.c')
-rw-r--r--sbc/sbcenc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sbc/sbcenc.c b/sbc/sbcenc.c
index 2a8066ec..9cbfb871 100644
--- a/sbc/sbcenc.c
+++ b/sbc/sbcenc.c
@@ -47,7 +47,7 @@ static ssize_t __read(int fd, void *buf, size_t count)
while (count > 0) {
len = read(fd, buf + pos, count);
if (len <= 0)
- return len;
+ return pos > len ? pos : len;
count -= len;
pos += len;
@@ -188,6 +188,8 @@ static void encode(char *filename, int subbands, int bitpool, int joint,
len = sbc_encode(&sbc, input, size,
output, sizeof(output), &encoded);
+ if (len <= 0)
+ break;
if (len < size)
memmove(input, input + len, size - len);