X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=formats%2Fctf%2Fir%2Ffields.c;h=0ad52a020dc05a79095c506ca13941e016187190;hb=f3985ab106d89d8e764c1a8dd0c8bda09b755d10;hp=412b7fdef065cc3adf0cf80bd3d35f32a5d811bb;hpb=e25dc75977dad34abd4340bd5478f9f3864a6ffd;p=babeltrace.git diff --git a/formats/ctf/ir/fields.c b/formats/ctf/ir/fields.c index 412b7fde..0ad52a02 100644 --- a/formats/ctf/ir/fields.c +++ b/formats/ctf/ir/fields.c @@ -866,11 +866,10 @@ end: return container; } -const char *bt_ctf_field_enumeration_get_single_mapping_name( - struct bt_ctf_field *field) +struct bt_ctf_field_type_enumeration_mapping_iterator * +bt_ctf_field_enumeration_get_mappings(struct bt_ctf_field *field) { int ret; - const char *name = NULL; struct bt_ctf_field *container = NULL; struct bt_ctf_field_type *container_type = NULL; struct bt_ctf_field_type_integer *integer_type = NULL; @@ -899,11 +898,6 @@ const char *bt_ctf_field_enumeration_get_single_mapping_name( } iter = bt_ctf_field_type_enumeration_find_mappings_by_unsigned_value( field->type, value); - if (!iter) { - goto error_put_container_type; - } - (void) bt_ctf_field_type_enumeration_mapping_iterator_get_unsigned( - iter, &name, NULL, NULL); } else { int64_t value; @@ -914,11 +908,6 @@ const char *bt_ctf_field_enumeration_get_single_mapping_name( } iter = bt_ctf_field_type_enumeration_find_mappings_by_signed_value( field->type, value); - if (!iter) { - goto error_put_container_type; - } - (void) bt_ctf_field_type_enumeration_mapping_iterator_get_signed( - iter, &name, NULL, NULL); } error_put_container_type: @@ -926,8 +915,7 @@ error_put_container_type: error_put_container: bt_put(container); end: - bt_put(iter); - return name; + return iter; } int bt_ctf_field_signed_integer_get_value(struct bt_ctf_field *field, @@ -1915,6 +1903,10 @@ int bt_ctf_field_integer_serialize(struct bt_ctf_field *field, struct bt_ctf_field_integer *integer = container_of(field, struct bt_ctf_field_integer, parent); + if (!bt_ctf_field_generic_is_set(field)) { + ret = -1; + goto end; + } retry: ret = ctf_integer_write(&pos->parent, &integer->definition.p); if (ret == -EFAULT) { @@ -1950,6 +1942,10 @@ int bt_ctf_field_floating_point_serialize(struct bt_ctf_field *field, struct bt_ctf_field_floating_point *floating_point = container_of(field, struct bt_ctf_field_floating_point, parent); + if (!bt_ctf_field_generic_is_set(field)) { + ret = -1; + goto end; + } retry: ret = ctf_float_write(&pos->parent, &floating_point->definition.p); if (ret == -EFAULT) { @@ -1991,20 +1987,20 @@ int bt_ctf_field_structure_serialize(struct bt_ctf_field *field, } for (i = 0; i < structure->fields->len; i++) { - struct bt_ctf_field *field = g_ptr_array_index( + struct bt_ctf_field *member = g_ptr_array_index( structure->fields, i); - ret = bt_ctf_field_serialize(field, pos); + ret = bt_ctf_field_serialize(member, pos); if (ret) { const char *name; - struct bt_ctf_field_type *field_type = + struct bt_ctf_field_type *structure_type = bt_ctf_field_get_type(field); - (void) bt_ctf_field_type_structure_get_field(field_type, - &name, NULL, i); + (void) bt_ctf_field_type_structure_get_field( + structure_type, &name, NULL, i); fprintf(stderr, "Field %s failed to serialize\n", name ? name : "NULL"); - bt_put(field_type); + bt_put(structure_type); break; } }