diff options
author | Lennart Poettering <lennart@poettering.net> | 2008-05-27 22:14:54 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2008-05-27 22:14:54 +0000 |
commit | 9c0cc6bf6146dd71286c5ae7e3cf069024860ceb (patch) | |
tree | 34dd5d866f68fbab20bc8ce3cb8f73631c7c028d /src | |
parent | b0bd4e0ff0719f8f5d1bb1cd5b62cee7e6a3c2c8 (diff) |
decrease size counter as we hand out data, so we can detect EOF better
git-svn-id: file:///home/lennart/svn/public/libcanberra/trunk@28 01b60673-d06a-42c0-afdd-89cb8e0f78ac
Diffstat (limited to 'src')
-rw-r--r-- | src/read-vorbis.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/read-vorbis.c b/src/read-vorbis.c index be35f2a..6b90c87 100644 --- a/src/read-vorbis.c +++ b/src/read-vorbis.c @@ -95,7 +95,7 @@ int ca_vorbis_open(ca_vorbis **_v, FILE *f) { goto fail; } - v->size = n * sizeof(int16_t); + v->size = n * sizeof(int16_t) * ca_vorbis_get_nchannels(v); *_v = v; @@ -171,7 +171,11 @@ int ca_vorbis_read_s16ne(ca_vorbis *v, int16_t *d, unsigned *n){ } while (length >= 4096); + ca_assert(v->size >= n_read); + v->size -= n_read; + *n = (unsigned) n_read/sizeof(int16_t); + return CA_SUCCESS; } |