X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fwriter%2Fwriter.c;h=57236bd94186baa0c3e562cb1a49834191b39971;hp=d1ef5dc45d46be4359e39147a874b6ce5ec6a9f8;hb=2f100782231d86cdaaadf7a8568c5b28583800f4;hpb=c13c7ca07e124477b059a69d75835afe98d4e634 diff --git a/formats/ctf/writer/writer.c b/formats/ctf/writer/writer.c index d1ef5dc4..57236bd9 100644 --- a/formats/ctf/writer/writer.c +++ b/formats/ctf/writer/writer.c @@ -234,6 +234,7 @@ struct bt_ctf_stream *bt_ctf_writer_create_stream(struct bt_ctf_writer *writer, goto error; } + for (i = 0; i < writer->stream_classes->len; i++) { if (writer->stream_classes->pdata[i] == stream->stream_class) { stream_class_found = 1; @@ -241,11 +242,21 @@ struct bt_ctf_stream *bt_ctf_writer_create_stream(struct bt_ctf_writer *writer, } if (!stream_class_found) { - if (bt_ctf_stream_class_set_id(stream->stream_class, - writer->next_stream_id++)) { - goto error; + int64_t stream_id = bt_ctf_stream_class_get_id(stream_class); + if (stream_id < 0) { + if (bt_ctf_stream_class_set_id(stream->stream_class, + writer->next_stream_id++)) { + goto error; + } } + for (i = 0; i < writer->stream_classes->len; i++) { + if (stream_id == bt_ctf_stream_class_get_id( + writer->stream_classes->pdata[i])) { + /* Duplicate stream id found */ + goto error; + } + } bt_ctf_stream_class_get(stream->stream_class); g_ptr_array_add(writer->stream_classes, stream->stream_class); }