- type_ref(integer_type);
- enum_type->integer_type = integer_type;
- enum_type->p.name = g_quark_from_string(name);
- enum_type->p.alignment = 1;
- enum_type->p.copy = enum_copy;
- enum_type->p.type_free = _enum_type_free;
- enum_type->p.declaration_new = _enum_declaration_new;
- enum_type->p.declaration_free = _enum_declaration_free;
- enum_type->p.ref = 1;
- if (enum_type->p.name) {
- ret = register_type(&enum_type->p);
- if (ret)
- goto register_error;
- }
- return enum_type;
-
-register_error:
- g_hash_table_destroy(enum_type->table.value_to_quark_set);
- g_hash_table_destroy(enum_type->table.quark_to_range_set);
- type_unref(enum_type->integer_type);
- g_free(enum_type);
- return NULL;
+ declaration_ref(&integer_declaration->p);
+ enum_declaration->integer_declaration = integer_declaration;
+ enum_declaration->p.id = CTF_TYPE_ENUM;
+ enum_declaration->p.alignment = 1;
+ enum_declaration->p.copy = enum_copy;
+ enum_declaration->p.declaration_free = _enum_declaration_free;
+ enum_declaration->p.definition_new = _enum_definition_new;
+ enum_declaration->p.definition_free = _enum_definition_free;
+ enum_declaration->p.ref = 1;
+ return enum_declaration;