Add unit test validating seeking to last event of a trace
[babeltrace.git] / formats / ctf / ctf.c
index 9706f7a3bfcd7eb9b777e5bb8e47036cf397deac..752b548e766d37bc60cf3fc21215f10eb894fc55 100644 (file)
@@ -33,7 +33,7 @@
 #include <babeltrace/ctf/events-internal.h>
 #include <babeltrace/trace-handle-internal.h>
 #include <babeltrace/context-internal.h>
-#include <babeltrace/uuid.h>
+#include <babeltrace/compat/uuid.h>
 #include <babeltrace/endian.h>
 #include <inttypes.h>
 #include <stdio.h>
@@ -51,7 +51,7 @@
 #include "metadata/ctf-parser.h"
 #include "metadata/ctf-ast.h"
 #include "events-private.h"
-#include "memstream.h"
+#include <babeltrace/compat/memstream.h>
 
 #define LOG2_CHAR_BIT  3
 
@@ -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;
This page took 0.02455 seconds and 4 git commands to generate.