ir: make bt_ctf_field_copy() public
[babeltrace.git] / formats / ctf / ir / event-fields.c
index 6220144a2b57bc94d216a73bf1de34f2adbb8388..29c5397f7d2fe9406afbc3c90c6d567ca5c46eef 100644 (file)
@@ -524,12 +524,14 @@ struct bt_ctf_field *bt_ctf_field_array_get_field(struct bt_ctf_field *field,
        }
 
        new_field = bt_ctf_field_create(field_type);
-       bt_ctf_field_get(new_field);
        array->elements->pdata[(size_t)index] = new_field;
 end:
        if (field_type) {
                bt_ctf_field_type_put(field_type);
        }
+       if (new_field) {
+               bt_ctf_field_get(new_field);
+       }
        return new_field;
 }
 
@@ -557,12 +559,14 @@ struct bt_ctf_field *bt_ctf_field_sequence_get_field(struct bt_ctf_field *field,
        }
 
        new_field = bt_ctf_field_create(field_type);
-       bt_ctf_field_get(new_field);
        sequence->elements->pdata[(size_t)index] = new_field;
 end:
        if (field_type) {
                bt_ctf_field_type_put(field_type);
        }
+       if (new_field) {
+               bt_ctf_field_get(new_field);
+       }
        return new_field;
 }
 
@@ -1077,7 +1081,6 @@ end:
        return ret;
 }
 
-BT_HIDDEN
 struct bt_ctf_field *bt_ctf_field_copy(struct bt_ctf_field *field)
 {
        int ret;
@@ -1928,13 +1931,19 @@ int bt_ctf_field_structure_copy(struct bt_ctf_field *src,
        g_ptr_array_set_size(struct_dst->fields, struct_src->fields->len);
 
        for (i = 0; i < struct_src->fields->len; i++) {
-               struct bt_ctf_field *field_copy = bt_ctf_field_copy(
-                       g_ptr_array_index(struct_src->fields, i));
+               struct bt_ctf_field *field =
+                       g_ptr_array_index(struct_src->fields, i);
+               struct bt_ctf_field *field_copy = NULL;
 
-               if (!field_copy) {
-                       ret = -1;
-                       goto end;
+               if (field) {
+                       field_copy = bt_ctf_field_copy(field);
+
+                       if (!field_copy) {
+                               ret = -1;
+                               goto end;
+                       }
                }
+
                g_ptr_array_index(struct_dst->fields, i) = field_copy;
        }
 end:
@@ -1981,13 +1990,19 @@ int bt_ctf_field_array_copy(struct bt_ctf_field *src,
 
        g_ptr_array_set_size(array_dst->elements, array_src->elements->len);
        for (i = 0; i < array_src->elements->len; i++) {
-               struct bt_ctf_field *field_copy = bt_ctf_field_copy(
-                       g_ptr_array_index(array_src->elements, i));
+               struct bt_ctf_field *field =
+                       g_ptr_array_index(array_src->elements, i);
+               struct bt_ctf_field *field_copy = NULL;
 
-               if (!field_copy) {
-                       ret = -1;
-                       goto end;
+               if (field) {
+                       field_copy = bt_ctf_field_copy(field);
+
+                       if (!field_copy) {
+                               ret = -1;
+                               goto end;
+                       }
                }
+
                g_ptr_array_index(array_dst->elements, i) = field_copy;
        }
 end:
@@ -2033,12 +2048,17 @@ int bt_ctf_field_sequence_copy(struct bt_ctf_field *src,
        assert(sequence_dst->elements->len == sequence_src->elements->len);
 
        for (i = 0; i < sequence_src->elements->len; i++) {
-               struct bt_ctf_field *field_copy = bt_ctf_field_copy(
-                       g_ptr_array_index(sequence_src->elements, i));
+               struct bt_ctf_field *field =
+                       g_ptr_array_index(sequence_src->elements, i);
+               struct bt_ctf_field *field_copy = NULL;
 
-               if (!field_copy) {
-                       ret = -1;
-                       goto end;
+               if (field) {
+                       field_copy = bt_ctf_field_copy(field);
+
+                       if (!field_copy) {
+                               ret = -1;
+                               goto end;
+                       }
                }
 
                g_ptr_array_index(sequence_dst->elements, i) = field_copy;
This page took 0.024919 seconds and 4 git commands to generate.