{
struct bt_ctf_field *field = NULL;
enum ctf_type_id type_id;
+ int ret;
if (!type) {
goto error;
}
type_id = bt_ctf_field_type_get_type_id(type);
- if (type_id <= CTF_TYPE_UNKNOWN || type_id >= NR_CTF_TYPES ||
- bt_ctf_field_type_validate(type)) {
+ if (type_id <= CTF_TYPE_UNKNOWN || type_id >= NR_CTF_TYPES) {
+ goto error;
+ }
+
+ /* Field class MUST be valid */
+ ret = bt_ctf_field_type_validate(type);
+
+ if (ret) {
+ /* Invalid */
goto error;
}
expected_field_type =
bt_ctf_field_type_structure_get_field_type_by_name(field->type,
name);
- if (expected_field_type != value->type) {
+
+ if (bt_ctf_field_type_compare(expected_field_type, value->type)) {
ret = -1;
goto end;
}