summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-05-27 22:14:54 +0000
committerLennart Poettering <lennart@poettering.net>2008-05-27 22:14:54 +0000
commit9c0cc6bf6146dd71286c5ae7e3cf069024860ceb (patch)
tree34dd5d866f68fbab20bc8ce3cb8f73631c7c028d
parentb0bd4e0ff0719f8f5d1bb1cd5b62cee7e6a3c2c8 (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
-rw-r--r--src/read-vorbis.c6
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;
}