Fix: may-uninitialized warning in trace-ir-metadata-field-class-copy.c
[babeltrace.git] / plugins / lttng-utils / debug-info / trace-ir-metadata-field-class-copy.c
index df6e26d1dbcadc4e711ae11bd2fe8c75c17747d5..ca8f850702c79eb497f22bf232b924047b6e7cd1 100644 (file)
@@ -44,38 +44,56 @@ static
 const bt_field_class *walk_field_path(const bt_field_path *fp,
                const bt_field_class *fc)
 {
-       uint64_t i, fp_index_count;
+       uint64_t i, fp_item_count;
        const bt_field_class *curr_fc;
 
        BT_ASSERT(bt_field_class_get_type(fc) == BT_FIELD_CLASS_TYPE_STRUCTURE);
        BT_LOGD("Walking field path on field class: fp-addr=%p, fc-addr=%p",
                        fp, fc);
 
-       fp_index_count = bt_field_path_get_index_count(fp);
+       fp_item_count = bt_field_path_get_item_count(fp);
        curr_fc = fc;
-       for (i = 0; i < fp_index_count; i++) {
+       for (i = 0; i < fp_item_count; i++) {
                bt_field_class_type fc_type = bt_field_class_get_type(curr_fc);
-               uint64_t curr_index = bt_field_path_get_index_by_index(fp, i);
+               const bt_field_path_item *fp_item =
+                       bt_field_path_borrow_item_by_index_const(fp, i);
 
                switch (fc_type) {
                case BT_FIELD_CLASS_TYPE_STRUCTURE:
                {
-                       const bt_field_class_structure_member *member =
-                               bt_field_class_structure_borrow_member_by_index_const(
-                                       curr_fc, curr_index);
+                       const bt_field_class_structure_member *member;
+
+                       BT_ASSERT(bt_field_path_item_get_type(fp_item) ==
+                               BT_FIELD_PATH_ITEM_TYPE_INDEX);
+                       member = bt_field_class_structure_borrow_member_by_index_const(
+                               curr_fc,
+                               bt_field_path_item_index_get_index(fp_item));
                        curr_fc = bt_field_class_structure_member_borrow_field_class_const(
                                member);
                        break;
                }
                case BT_FIELD_CLASS_TYPE_VARIANT:
                {
-                       const bt_field_class_variant_option *option =
-                               bt_field_class_variant_borrow_option_by_index_const(
-                                       curr_fc, curr_index);
+                       const bt_field_class_variant_option *option;
+
+                       BT_ASSERT(bt_field_path_item_get_type(fp_item) ==
+                               BT_FIELD_PATH_ITEM_TYPE_INDEX);
+                       option = bt_field_class_variant_borrow_option_by_index_const(
+                               curr_fc,
+                               bt_field_path_item_index_get_index(fp_item));
                        curr_fc = bt_field_class_variant_option_borrow_field_class_const(
                                option);
                        break;
                }
+               case BT_FIELD_CLASS_TYPE_STATIC_ARRAY:
+               case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY:
+               {
+                       BT_ASSERT(bt_field_path_item_get_type(fp_item) ==
+                               BT_FIELD_PATH_ITEM_TYPE_CURRENT_ARRAY_ELEMENT);
+                       curr_fc = bt_field_class_array_borrow_element_field_class_const(
+                               curr_fc);
+                       break;
+               }
                default:
                        abort();
                }
@@ -183,15 +201,21 @@ int field_class_unsigned_enumeration_copy(
        enum_mapping_count = bt_field_class_enumeration_get_mapping_count(in_field_class);
        for (i = 0; i < enum_mapping_count; i++) {
                const char *label;
-               const bt_field_class_unsigned_enumeration_mapping_ranges *ranges;
+               const bt_field_class_unsigned_enumeration_mapping *u_mapping;
+               const bt_field_class_enumeration_mapping *mapping;
                uint64_t range_index, range_count;
 
                /* Get the ranges and the range count. */
-               bt_field_class_unsigned_enumeration_borrow_mapping_by_index_const(
-                               in_field_class, i, &label, &ranges);
+               u_mapping = bt_field_class_unsigned_enumeration_borrow_mapping_by_index_const(
+                               in_field_class, i);
+               mapping = bt_field_class_unsigned_enumeration_mapping_as_mapping_const(
+                       u_mapping);
                range_count =
-                       bt_field_class_unsigned_enumeration_mapping_ranges_get_range_count(
-                                       ranges);
+                       bt_field_class_enumeration_mapping_get_range_count(
+                               mapping);
+               label = bt_field_class_enumeration_mapping_get_label(
+                       mapping);
+
                /*
                 * Iterate over all the ranges to add them to copied field
                 * class.
@@ -199,8 +223,8 @@ int field_class_unsigned_enumeration_copy(
                for (range_index = 0; range_index < range_count; range_index++) {
                        uint64_t lower, upper;
                        bt_field_class_status status;
-                       bt_field_class_unsigned_enumeration_mapping_ranges_get_range_by_index(
-                                       ranges, range_index, &lower, &upper);
+                       bt_field_class_unsigned_enumeration_mapping_get_range_by_index(
+                                       u_mapping, range_index, &lower, &upper);
 
                        BT_LOGD("Copying range in enumeration field class: "
                                        "label=%s, lower=%"PRId64", upper=%"PRId64,
@@ -249,15 +273,21 @@ int field_class_signed_enumeration_copy(
                bt_field_class_enumeration_get_mapping_count(in_field_class);
        for (i = 0; i < enum_mapping_count; i++) {
                const char *label;
-               const bt_field_class_signed_enumeration_mapping_ranges *ranges;
+               const bt_field_class_signed_enumeration_mapping *i_mapping;
+               const bt_field_class_enumeration_mapping *mapping;
                uint64_t range_index, range_count;
 
                /* Get the ranges and the range count. */
-               bt_field_class_signed_enumeration_borrow_mapping_by_index_const(
-                               in_field_class, i, &label, &ranges);
+               i_mapping = bt_field_class_signed_enumeration_borrow_mapping_by_index_const(
+                               in_field_class, i);
+               mapping = bt_field_class_signed_enumeration_mapping_as_mapping_const(
+                       i_mapping);
                range_count =
-                       bt_field_class_signed_enumeration_mapping_ranges_get_range_count(
-                                       ranges);
+                       bt_field_class_enumeration_mapping_get_range_count(
+                               mapping);
+               label = bt_field_class_enumeration_mapping_get_label(
+                       mapping);
+
                /*
                 * Iterate over all the ranges to add them to copied field
                 * class.
@@ -265,8 +295,8 @@ int field_class_signed_enumeration_copy(
                for (range_index = 0; range_index < range_count; range_index++) {
                        int64_t lower, upper;
                        bt_field_class_status status;
-                       bt_field_class_signed_enumeration_mapping_ranges_get_range_by_index(
-                                       ranges, range_index, &lower, &upper);
+                       bt_field_class_signed_enumeration_mapping_get_range_by_index(
+                                       i_mapping, range_index, &lower, &upper);
 
                        BT_LOGD("Copying range in enumeration field class: "
                                        "label=%s, lower=%ld, upper=%ld",
@@ -388,7 +418,7 @@ int field_class_variant_copy(
                const bt_field_class *in_field_class,
                bt_field_class *out_field_class)
 {
-       bt_field_class *out_tag_field_class;
+       bt_field_class *out_tag_field_class = NULL;
        uint64_t i, variant_option_count;
        const bt_field_path *tag_fp;
        const bt_field_class *tag_fc;
This page took 0.02599 seconds and 4 git commands to generate.