struct bt_ctf_packet *packet,
struct bt_ctf_stream *stream)
{
- struct bt_ctf_packet *writer_packet;
+ struct bt_ctf_packet *writer_packet = NULL;
writer_packet = bt_ctf_packet_create(stream);
if (!writer_packet) {
const char *name, int64_t value)
{
enum bt_component_status ret;
- struct bt_ctf_field *packet_context, *writer_packet_context;
- struct bt_ctf_field_type *struct_type, *writer_packet_context_type;
- struct bt_ctf_stream_class *stream_class;
- struct bt_ctf_stream *stream;
+ struct bt_ctf_field *packet_context = NULL, *writer_packet_context = NULL;
+ struct bt_ctf_field_type *struct_type = NULL, *field_type = NULL;
+ struct bt_ctf_field *field = NULL, *writer_field = NULL;
int nr_fields, i, int_ret;
packet_context = bt_ctf_packet_get_context(writer_packet);
if (!packet_context) {
- ret = BT_COMPONENT_STATUS_ERROR;
- fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
- __LINE__);
- goto end;
- }
-
- stream = bt_ctf_packet_get_stream(writer_packet);
- if (!stream) {
- ret = BT_COMPONENT_STATUS_ERROR;
- fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
- __LINE__);
- goto end_put_packet_context;
- }
-
- stream_class = bt_ctf_stream_get_class(stream);
- if (!stream_class) {
- ret = BT_COMPONENT_STATUS_ERROR;
fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
__LINE__);
- goto end_put_stream;
- }
-
- writer_packet_context_type = bt_ctf_stream_class_get_packet_context_type(
- stream_class);
- if (!writer_packet_context_type) {
- ret = BT_COMPONENT_STATUS_ERROR;
- fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
- __LINE__);
- goto end_put_stream_class;
+ goto error;
}
struct_type = bt_ctf_field_get_type(packet_context);
if (!struct_type) {
- ret = BT_COMPONENT_STATUS_ERROR;
fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
__LINE__);
- goto end_put_writer_packet_context_type;
+ goto error;
}
writer_packet_context = bt_ctf_packet_get_context(writer_packet);
if (!writer_packet_context) {
- ret = BT_COMPONENT_STATUS_ERROR;
fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
__LINE__);
- goto end_put_struct_type;
+ goto error;
}
nr_fields = bt_ctf_field_type_structure_get_field_count(struct_type);
for (i = 0; i < nr_fields; i++) {
- struct bt_ctf_field *field, *writer_field;
- struct bt_ctf_field_type *field_type;
const char *field_name;
field = bt_ctf_field_structure_get_field_by_index(
packet_context, i);
if (!field) {
- ret = BT_COMPONENT_STATUS_ERROR;
fprintf(err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
- goto end_put_writer_packet_context;
+ goto error;
}
if (bt_ctf_field_type_structure_get_field(struct_type,
&field_name, &field_type, i) < 0) {
- ret = BT_COMPONENT_STATUS_ERROR;
- bt_put(field);
fprintf(err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
- goto end_put_writer_packet_context;
+ goto error;
}
if (strcmp(field_name, name)) {
- bt_put(field_type);
- bt_put(field);
+ BT_PUT(field_type);
+ BT_PUT(field);
continue;
}
if (bt_ctf_field_type_get_type_id(field_type) != BT_CTF_TYPE_ID_INTEGER) {
fprintf(err, "[error] Unexpected packet context field type\n");
- bt_put(field);
- ret = BT_COMPONENT_STATUS_ERROR;
- goto end_put_writer_packet_context;
+ goto error;
}
writer_field = bt_ctf_field_structure_get_field(writer_packet_context,
field_name);
if (!writer_field) {
- ret = BT_COMPONENT_STATUS_ERROR;
fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
__LINE__);
- goto end;
+ goto error;
}
int_ret = bt_ctf_field_unsigned_integer_set_value(writer_field, value);
- bt_put(writer_field);
if (int_ret < 0) {
- ret = BT_COMPONENT_STATUS_ERROR;
fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
__LINE__);
- goto end_put_writer_packet_context;
+ goto error;
}
-
- bt_put(field_type);
- bt_put(field);
+ BT_PUT(writer_field);
+ BT_PUT(field_type);
+ BT_PUT(field);
}
ret = BT_COMPONENT_STATUS_OK;
+ goto end;
-end_put_writer_packet_context:
- bt_put(writer_packet_context);
-end_put_struct_type:
+error:
+ bt_put(writer_field);
+ bt_put(field_type);
+ bt_put(field);
+ ret = BT_COMPONENT_STATUS_ERROR;
+end:
bt_put(struct_type);
-end_put_writer_packet_context_type:
- bt_put(writer_packet_context_type);
-end_put_stream_class:
- bt_put(stream_class);
-end_put_packet_context:
bt_put(packet_context);
-end_put_stream:
- bt_put(stream);
-end:
return ret;
}
struct trimmer_iterator *trim_it,
struct bt_ctf_packet *packet)
{
- struct bt_ctf_stream *stream;
- struct bt_ctf_field *writer_packet_context;
+ struct bt_ctf_stream *stream = NULL;
+ struct bt_ctf_field *writer_packet_context = NULL;
struct bt_ctf_packet *writer_packet = NULL;
int int_ret;
if (!stream) {
fprintf(trim_it->err, "[error] %s in %s:%d\n",
__func__, __FILE__, __LINE__);
- goto end;
+ goto error;
}
/*
writer_packet = lookup_packet(trim_it, packet);
if (writer_packet) {
g_hash_table_remove(trim_it->packet_map, packet);
- bt_put(writer_packet);
+ BT_PUT(writer_packet);
}
writer_packet = insert_new_packet(trim_it, packet, stream);
if (!writer_packet) {
fprintf(trim_it->err, "[error] %s in %s:%d\n",
__func__, __FILE__, __LINE__);
- goto end_put_stream;
+ goto error;
}
bt_get(writer_packet);
writer_packet_context = ctf_copy_packet_context(trim_it->err, packet,
stream);
if (!writer_packet_context) {
- BT_PUT(writer_packet);
fprintf(trim_it->err, "[error] %s in %s:%d\n",
__func__, __FILE__, __LINE__);
- goto end_put_stream;
+ goto error;
}
int_ret = bt_ctf_packet_set_context(writer_packet, writer_packet_context);
if (int_ret) {
- BT_PUT(writer_packet);
fprintf(trim_it->err, "[error] %s in %s:%d\n",
__func__, __FILE__, __LINE__);
- goto end_put_writer_packet_context;
+ goto error;
}
-end_put_writer_packet_context:
+ goto end;
+
+error:
+ BT_PUT(writer_packet);
+end:
bt_put(writer_packet_context);
-end_put_stream:
bt_put(stream);
-end:
return writer_packet;
}
struct trimmer_iterator *trim_it,
struct bt_ctf_packet *packet)
{
- struct bt_ctf_packet *writer_packet;
+ struct bt_ctf_packet *writer_packet = NULL;
writer_packet = lookup_packet(trim_it, packet);
if (!writer_packet) {
struct trimmer_iterator *trim_it,
struct bt_ctf_event *event)
{
- struct bt_ctf_event_class *event_class;
- struct bt_ctf_stream *stream;
- struct bt_ctf_stream_class *stream_class;
+ struct bt_ctf_event_class *event_class = NULL;
struct bt_ctf_event *writer_event = NULL;
- struct bt_ctf_packet *packet, *writer_packet;
+ struct bt_ctf_packet *packet = NULL, *writer_packet = NULL;
const char *event_name;
int int_ret;
if (!event_class) {
fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
- goto end;
+ goto error;
}
event_name = bt_ctf_event_class_get_name(event_class);
if (!event_name) {
fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
- goto end_put_event_class;
- }
-
- stream = bt_ctf_event_get_stream(event);
- if (!stream) {
- fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
- __FILE__, __LINE__);
- goto end_put_event_class;
- }
-
- stream_class = bt_ctf_event_class_get_stream_class(event_class);
- if (!stream_class) {
- fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
- __FILE__, __LINE__);
- goto end_put_stream;
+ goto error;
}
writer_event = ctf_copy_event(trim_it->err, event, event_class, false);
__FILE__, __LINE__);
fprintf(trim_it->err, "[error] Failed to copy event %s\n",
bt_ctf_event_class_get_name(event_class));
- goto end_put_stream_class;
+ goto error;
}
packet = bt_ctf_event_get_packet(event);
if (!packet) {
- BT_PUT(writer_event);
fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
- goto end_put_stream_class;
+ goto error;
}
writer_packet = lookup_packet(trim_it, packet);
if (!writer_packet) {
- BT_PUT(writer_event);
fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
- goto end_put_packet;
+ goto error;
}
bt_get(writer_packet);
int_ret = bt_ctf_event_set_packet(writer_event, writer_packet);
if (int_ret < 0) {
- BT_PUT(writer_event);
fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
fprintf(trim_it->err, "[error] Failed to append event %s\n",
bt_ctf_event_class_get_name(event_class));
- goto end_put_writer_packet;
+ goto error;
}
- /* We keep the reference on the writer event */
+ /* We keep the reference on the writer_event to create a notification. */
+ goto end;
-end_put_writer_packet:
+error:
+ BT_PUT(writer_event);
+end:
bt_put(writer_packet);
-end_put_packet:
bt_put(packet);
-end_put_stream_class:
- bt_put(stream_class);
-end_put_stream:
- bt_put(stream);
-end_put_event_class:
bt_put(event_class);
-end:
return writer_event;
}