Fix: ensure sequence length field value is set and freeze it
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 14 Sep 2017 16:13:33 +0000 (12:13 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sun, 17 Sep 2017 18:10:51 +0000 (14:10 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
lib/ctf-ir/fields.c

index 05be90fe63dd610a9474ad26676d589964a8b43a..65f31b38dda55e64de21ae4e5ed2e23b2384b3cd 100644 (file)
@@ -483,6 +483,15 @@ int bt_ctf_field_sequence_set_length(struct bt_ctf_field *field,
                goto end;
        }
 
+       if (!bt_ctf_field_value_is_set(length_field)) {
+               BT_LOGW("Invalid parameter: length field's value is not set: "
+                       "field-addr=%p, length-field-addr=%p, "
+                       "length-field-ft-addr=%p", field, length_field,
+                       length_field->type);
+               ret = -1;
+               goto end;
+       }
+
        length = container_of(length_field, struct bt_ctf_field_integer,
                parent);
        sequence_length = length->payload.unsignd;
@@ -504,6 +513,7 @@ int bt_ctf_field_sequence_set_length(struct bt_ctf_field *field,
        g_ptr_array_set_size(sequence->elements, (size_t) sequence_length);
        bt_get(length_field);
        sequence->length = length_field;
+       bt_ctf_field_freeze(length_field);
 end:
        return ret;
 }
This page took 0.025369 seconds and 4 git commands to generate.