aboutsummaryrefslogtreecommitdiffstats
path: root/src/lv2_evbuf.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-03-08 18:31:35 +0000
committerDavid Robillard <d@drobilla.net>2012-03-08 18:31:35 +0000
commit4f01de8d0614017898021a4cf80ff8d4db4cb7de (patch)
tree3ed60b836801b2143221dc862407f59eeaed1f80 /src/lv2_evbuf.c
parentc024819b9d8c452e970a8702e61c31bd8b319f38 (diff)
downloadjalv-4f01de8d0614017898021a4cf80ff8d4db4cb7de.tar.gz
jalv-4f01de8d0614017898021a4cf80ff8d4db4cb7de.tar.bz2
jalv-4f01de8d0614017898021a4cf80ff8d4db4cb7de.zip
Fix sequence ports.
git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@4034 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/lv2_evbuf.c')
-rw-r--r--src/lv2_evbuf.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lv2_evbuf.c b/src/lv2_evbuf.c
index f3aea8d..3037e82 100644
--- a/src/lv2_evbuf.c
+++ b/src/lv2_evbuf.c
@@ -14,6 +14,7 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <assert.h>
#include <string.h>
#include <stdlib.h>
@@ -89,7 +90,7 @@ lv2_evbuf_reset(LV2_Evbuf* evbuf, bool input)
break;
case LV2_EVBUF_ATOM:
if (input) {
- evbuf->buf.atom.atom.size = 0;
+ evbuf->buf.atom.atom.size = sizeof(LV2_Atom_Sequence_Body);
evbuf->buf.atom.atom.type = evbuf->atom_Sequence;
} else {
evbuf->buf.atom.atom.size = evbuf->capacity;
@@ -105,8 +106,10 @@ lv2_evbuf_get_size(LV2_Evbuf* evbuf)
case LV2_EVBUF_EVENT:
return evbuf->buf.event.size;
case LV2_EVBUF_ATOM:
+ assert(evbuf->buf.atom.atom.type != evbuf->atom_Sequence
+ || evbuf->buf.atom.atom.size >= sizeof(LV2_Atom_Sequence_Body));
return evbuf->buf.atom.atom.type == evbuf->atom_Sequence
- ? evbuf->buf.atom.atom.size
+ ? evbuf->buf.atom.atom.size - sizeof(LV2_Atom_Sequence_Body)
: 0;
}
return 0;
@@ -134,7 +137,7 @@ lv2_evbuf_begin(LV2_Evbuf* evbuf)
LV2_Evbuf_Iterator
lv2_evbuf_end(LV2_Evbuf* evbuf)
{
- const size_t size = lv2_evbuf_get_size(evbuf);
+ const uint32_t size = lv2_evbuf_get_size(evbuf);
const LV2_Evbuf_Iterator iter = { evbuf, lv2_evbuf_pad_size(size) };
return iter;
}