X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=formats%2Fctf%2Fctf.c;h=60d9c9f9459d159b7627c9e76927409eccd55272;hb=9f56e4500aa99bb2cd644a7c1a539fc66f3753b3;hp=9706f7a3bfcd7eb9b777e5bb8e47036cf397deac;hpb=5bfcad93f920809332f7af735ebd95d2c9a601c2;p=babeltrace.git diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index 9706f7a3..60d9c9f9 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include #include #include @@ -51,7 +51,7 @@ #include "metadata/ctf-parser.h" #include "metadata/ctf-ast.h" #include "events-private.h" -#include "memstream.h" +#include #define LOG2_CHAR_BIT 3 @@ -670,7 +670,7 @@ int ctf_fini_pos(struct ctf_stream_pos *pos) /* * for SEEK_CUR: go to next packet. - * for SEEK_POS: go to packet numer (index). + * for SEEK_SET: go to packet numer (index). */ void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence) { @@ -712,7 +712,7 @@ void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence) switch (whence) { case SEEK_CUR: /* The writer will add padding */ - pos->mmap_offset += WRITE_PACKET_LEN / CHAR_BIT; + pos->mmap_offset += pos->packet_size / CHAR_BIT; break; case SEEK_SET: assert(index == 0); /* only seek supported for now */ @@ -729,14 +729,6 @@ void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence) pos->offset = 0; } else { read_next_packet: - if (pos->cur_index >= pos->packet_cycles_index->len) { - pos->offset = EOF; - return; - } - if (pos->cur_index >= pos->packet_real_index->len) { - pos->offset = EOF; - return; - } switch (whence) { case SEEK_CUR: { @@ -745,6 +737,9 @@ void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence) if (pos->offset == EOF) { return; } + assert(pos->cur_index < pos->packet_cycles_index->len); + assert(pos->cur_index < pos->packet_real_index->len); + /* For printing discarded event count */ packet_index = &g_array_index(pos->packet_cycles_index, struct packet_index, pos->cur_index); @@ -782,6 +777,10 @@ void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence) break; } case SEEK_SET: + if (index >= pos->packet_cycles_index->len) { + pos->offset = EOF; + return; + } packet_index = &g_array_index(pos->packet_cycles_index, struct packet_index, index); pos->last_events_discarded = packet_index->events_discarded;