X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Ftrace-ir%2Ffield-classes.c;h=325d18109058a8348872dbb886fb055bef18e785;hb=398454ed067b95215c7affbe265fd36edab931ee;hp=668bc46b9f27b02561496da88edbcbfa07a3169c;hpb=28e6ca8b6e08d1cdd1af81ae819aa39baa206eaf;p=babeltrace.git diff --git a/lib/trace-ir/field-classes.c b/lib/trace-ir/field-classes.c index 668bc46b..325d1810 100644 --- a/lib/trace-ir/field-classes.c +++ b/lib/trace-ir/field-classes.c @@ -137,7 +137,7 @@ bool size_is_valid_for_enumeration_field_class(struct bt_field_class *fc, return true; } -int bt_private_field_class_integer_set_field_value_range( +void bt_private_field_class_integer_set_field_value_range( struct bt_private_field_class *priv_fc, uint64_t size) { struct bt_field_class *fc = (void *) priv_fc; @@ -158,7 +158,6 @@ int bt_private_field_class_integer_set_field_value_range( "which are outside this range: %!+F, size=%" PRIu64, fc, size); int_fc->range = size; BT_LIB_LOGV("Set integer field class's field value range: %!+F", fc); - return 0; } enum bt_field_class_integer_preferred_display_base @@ -171,7 +170,7 @@ bt_field_class_integer_get_preferred_display_base(struct bt_field_class *fc) return int_fc->base; } -int bt_private_field_class_integer_set_preferred_display_base( +void bt_private_field_class_integer_set_preferred_display_base( struct bt_private_field_class *priv_fc, enum bt_field_class_integer_preferred_display_base base) { @@ -183,7 +182,6 @@ int bt_private_field_class_integer_set_preferred_display_base( BT_ASSERT_PRE_FC_HOT(fc, "Field class"); int_fc->base = base; BT_LIB_LOGV("Set integer field class's preferred display base: %!+F", fc); - return 0; } static @@ -218,10 +216,12 @@ void destroy_enumeration_field_class(struct bt_object *obj) } g_array_free(fc->mappings, TRUE); + fc->mappings = NULL; } if (fc->label_buf) { g_ptr_array_free(fc->label_buf, TRUE); + fc->label_buf = NULL; } g_free(fc); @@ -614,7 +614,7 @@ bt_bool bt_field_class_real_is_single_precision(struct bt_field_class *fc) return real_fc->is_single_precision; } -int bt_private_field_class_real_set_is_single_precision( +void bt_private_field_class_real_set_is_single_precision( struct bt_private_field_class *priv_fc, bt_bool is_single_precision) { @@ -627,7 +627,6 @@ int bt_private_field_class_real_set_is_single_precision( real_fc->is_single_precision = (bool) is_single_precision; BT_LIB_LOGV("Set real field class's \"is single precision\" property: " "%!+F", fc); - return 0; } static @@ -671,7 +670,7 @@ void finalize_named_field_class(struct bt_named_field_class *named_fc) } BT_LOGD_STR("Putting named field class's field class."); - bt_object_put_ref(named_fc->fc); + BT_OBJECT_PUT_REF_AND_RESET(named_fc->fc); } static @@ -763,7 +762,8 @@ int append_named_field_class_to_container_field_class( named_fc = &g_array_index(container_fc->named_fcs, struct bt_named_field_class, container_fc->named_fcs->len - 1); named_fc->name = name_str; - named_fc->fc = bt_object_get_ref(fc); + named_fc->fc = fc; + bt_object_get_no_null_check(fc); g_hash_table_insert(container_fc->name_to_index, named_fc->name->str, GUINT_TO_POINTER(container_fc->named_fcs->len - 1)); bt_field_class_freeze(fc); @@ -879,7 +879,9 @@ void destroy_variant_field_class(struct bt_object *obj) BT_LIB_LOGD("Destroying variant field class object: %!+F", fc); finalize_named_field_classes_container((void *) fc); BT_LOGD_STR("Putting selector field path."); - bt_object_put_ref(fc->selector_field_path); + BT_OBJECT_PUT_REF_AND_RESET(fc->selector_field_path); + BT_LOGD_STR("Putting selector field class."); + BT_OBJECT_PUT_REF_AND_RESET(fc->selector_fc); g_free(fc); } @@ -924,6 +926,7 @@ int bt_private_field_class_variant_set_selector_field_class( BT_ASSERT_PRE_FC_IS_ENUM(selector_fc, "Selector field class"); BT_ASSERT_PRE_FC_HOT(fc, "Variant field class"); var_fc->selector_fc = (void *) selector_fc; + bt_object_get_no_null_check(selector_fc); bt_field_class_freeze((void *) selector_fc); return 0; } @@ -1002,7 +1005,8 @@ void init_array_field_class(struct bt_field_class_array *fc, { BT_ASSERT(element_fc); init_field_class((void *) fc, type, release_func); - fc->element_fc = bt_object_get_ref(element_fc); + fc->element_fc = element_fc; + bt_object_get_no_null_check(element_fc); bt_field_class_freeze(element_fc); } @@ -1011,7 +1015,7 @@ void finalize_array_field_class(struct bt_field_class_array *array_fc) { BT_ASSERT(array_fc); BT_LOGD_STR("Putting element field class."); - bt_object_put_ref(array_fc->element_fc); + BT_OBJECT_PUT_REF_AND_RESET(array_fc->element_fc); } static @@ -1089,7 +1093,9 @@ void destroy_dynamic_array_field_class(struct bt_object *obj) BT_LIB_LOGD("Destroying dynamic array field class object: %!+F", fc); finalize_array_field_class((void *) fc); BT_LOGD_STR("Putting length field path."); - bt_object_put_ref(fc->length_field_path); + BT_OBJECT_PUT_REF_AND_RESET(fc->length_field_path); + BT_LOGD_STR("Putting length field class."); + BT_OBJECT_PUT_REF_AND_RESET(fc->length_fc); g_free(fc); } @@ -1133,7 +1139,8 @@ int bt_private_field_class_dynamic_array_set_length_field_class( "Field class"); BT_ASSERT_PRE_FC_IS_UNSIGNED_INT(length_fc, "Length field class"); BT_ASSERT_PRE_FC_HOT(fc, "Dynamic array field class"); - array_fc->length_fc = length_fc; + array_fc->length_fc = (void *) length_fc; + bt_object_get_no_null_check(length_fc); bt_field_class_freeze(length_fc); return 0; } @@ -1229,9 +1236,3 @@ void _bt_field_class_make_part_of_trace(struct bt_field_class *fc) break; } } - -struct bt_field_class *bt_field_class_borrow_from_private( - struct bt_private_field_class *priv_field_class) -{ - return (void *) priv_field_class; -}