void bt_attributes_destroy(struct bt_private_value *attr_obj)
{
BT_LOGD("Destroying attributes object: addr=%p", attr_obj);
- bt_object_put_ref(attr_obj);
+ BT_OBJECT_PUT_REF_AND_RESET(attr_obj);
}
BT_HIDDEN
if (clock_class->name.str) {
g_string_free(clock_class->name.str, TRUE);
+ clock_class->name.str = NULL;
+ clock_class->name.value = NULL;
}
if (clock_class->description.str) {
g_string_free(clock_class->description.str, TRUE);
+ clock_class->description.str = NULL;
+ clock_class->description.value = NULL;
}
bt_object_pool_finalize(&clock_class->cv_pool);
void bt_clock_value_destroy(struct bt_clock_value *clock_value)
{
BT_LIB_LOGD("Destroying clock value: %!+k", clock_value);
- bt_object_put_ref(clock_value->clock_class);
+ BT_OBJECT_PUT_REF_AND_RESET(clock_value->clock_class);
g_free(clock_value);
}
if (event_class->name.str) {
g_string_free(event_class->name.str, TRUE);
+ event_class->name.str = NULL;
}
if (event_class->emf_uri.str) {
g_string_free(event_class->emf_uri.str, TRUE);
+ event_class->emf_uri.str = NULL;
}
BT_LOGD_STR("Putting context field classe.");
- bt_object_put_ref(event_class->specific_context_fc);
+ BT_OBJECT_PUT_REF_AND_RESET(event_class->specific_context_fc);
BT_LOGD_STR("Putting payload field classe.");
- bt_object_put_ref(event_class->payload_fc);
+ BT_OBJECT_PUT_REF_AND_RESET(event_class->payload_fc);
bt_object_pool_finalize(&event_class->event_pool);
g_free(obj);
}
if (event->header_field) {
BT_LOGD_STR("Releasing event's header field.");
release_event_header_field(event->header_field, event);
+ event->header_field = NULL;
}
if (event->common_context_field) {
BT_LOGD_STR("Destroying event's stream event context field.");
bt_field_destroy(event->common_context_field);
+ event->common_context_field = NULL;
}
if (event->specific_context_field) {
BT_LOGD_STR("Destroying event's context field.");
bt_field_destroy(event->specific_context_field);
+ event->specific_context_field = NULL;
}
if (event->payload_field) {
BT_LOGD_STR("Destroying event's payload field.");
bt_field_destroy(event->payload_field);
+ event->payload_field = NULL;
}
BT_LOGD_STR("Putting event's class.");
if (event->default_cv) {
bt_clock_value_recycle(event->default_cv);
+ event->default_cv = NULL;
}
BT_LOGD_STR("Putting event's packet.");
- bt_object_put_ref(event->packet);
+ BT_OBJECT_PUT_REF_AND_RESET(event->packet);
g_free(event);
}
}
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);
}
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
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);
}
BT_ASSERT_PRE_FC_HAS_ID(fc, BT_FIELD_CLASS_TYPE_VARIANT, "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;
+ var_fc->selector_fc = bt_object_get_ref(selector_fc);
bt_field_class_freeze((void *) selector_fc);
return 0;
}
{
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
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);
}
"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 = bt_object_get_ref(length_fc);
bt_field_class_freeze(length_fc);
return 0;
}
BT_ASSERT(field_path);
BT_LIB_LOGD("Destroying field path: %!+P", field_path);
g_array_free(field_path->indexes, TRUE);
+ field_path->indexes = NULL;
g_free(field_path);
}
if (field_wrapper->field) {
BT_LOGD_STR("Destroying field.");
bt_field_destroy((void *) field_wrapper->field);
+ field_wrapper->field = NULL;
}
BT_LOGD_STR("Putting stream class.");
{
BT_ASSERT(field);
BT_LOGD_STR("Putting field's class.");
- bt_object_put_ref(field->class);
+ BT_OBJECT_PUT_REF_AND_RESET(field->class);
}
static
if (struct_field->fields) {
g_ptr_array_free(struct_field->fields, TRUE);
+ struct_field->fields = NULL;
}
g_free(field);
if (var_field->fields) {
g_ptr_array_free(var_field->fields, TRUE);
+ var_field->fields = NULL;
}
g_free(field);
if (array_field->fields) {
g_ptr_array_free(array_field->fields, TRUE);
+ array_field->fields = NULL;
}
g_free(field);
if (string_field->buf) {
g_array_free(string_field->buf, TRUE);
+ string_field->buf = NULL;
}
g_free(field);
} else {
bt_field_wrapper_destroy(packet->header_field);
}
+
+ packet->header_field = NULL;
}
if (packet->context_field) {
} else {
bt_field_wrapper_destroy(packet->context_field);
}
+
+ packet->context_field = NULL;
}
if (packet->default_beginning_cv) {
BT_LOGD_STR("Recycling beginning clock value.");
bt_clock_value_recycle(packet->default_beginning_cv);
+ packet->default_beginning_cv = NULL;
}
if (packet->default_end_cv) {
BT_LOGD_STR("Recycling end clock value.");
bt_clock_value_recycle(packet->default_end_cv);
+ packet->default_end_cv = NULL;
}
BT_LOGD_STR("Putting packet's stream.");
- bt_object_put_ref(packet->stream);
+ BT_OBJECT_PUT_REF_AND_RESET(packet->stream);
g_free(packet);
}
BT_LIB_LOGD("Destroying stream class: %!+S", stream_class);
BT_LOGD_STR("Putting default clock class.");
- bt_object_put_ref(stream_class->default_clock_class);
+ BT_OBJECT_PUT_REF_AND_RESET(stream_class->default_clock_class);
if (stream_class->event_classes) {
BT_LOGD_STR("Destroying event classes.");
g_ptr_array_free(stream_class->event_classes, TRUE);
+ stream_class->event_classes = NULL;
}
if (stream_class->name.str) {
g_string_free(stream_class->name.str, TRUE);
+ stream_class->name.str = NULL;
+ stream_class->name.value = NULL;
}
BT_LOGD_STR("Putting event header field classe.");
- bt_object_put_ref(stream_class->event_header_fc);
+ BT_OBJECT_PUT_REF_AND_RESET(stream_class->event_header_fc);
BT_LOGD_STR("Putting packet context field classe.");
- bt_object_put_ref(stream_class->packet_context_fc);
+ BT_OBJECT_PUT_REF_AND_RESET(stream_class->packet_context_fc);
BT_LOGD_STR("Putting event common context field classe.");
- bt_object_put_ref(stream_class->event_common_context_fc);
+ BT_OBJECT_PUT_REF_AND_RESET(stream_class->event_common_context_fc);
bt_object_pool_finalize(&stream_class->event_header_field_pool);
bt_object_pool_finalize(&stream_class->packet_context_field_pool);
g_free(stream_class);
if (stream->name.str) {
g_string_free(stream->name.str, TRUE);
+ stream->name.str = NULL;
+ stream->name.value = NULL;
}
bt_object_pool_finalize(&stream->packet_pool);
}
g_array_free(trace->is_static_listeners, TRUE);
+ trace->is_static_listeners = NULL;
}
bt_object_pool_finalize(&trace->packet_header_field_pool);
if (trace->environment) {
BT_LOGD_STR("Destroying environment attributes.");
bt_attributes_destroy(trace->environment);
+ trace->environment = NULL;
}
if (trace->name.str) {
g_string_free(trace->name.str, TRUE);
+ trace->name.str = NULL;
+ trace->name.value = NULL;
}
if (trace->streams) {
BT_LOGD_STR("Destroying streams.");
g_ptr_array_free(trace->streams, TRUE);
+ trace->streams = NULL;
}
if (trace->stream_classes) {
BT_LOGD_STR("Destroying stream classes.");
g_ptr_array_free(trace->stream_classes, TRUE);
+ trace->stream_classes = NULL;
}
if (trace->stream_classes_stream_count) {
g_hash_table_destroy(trace->stream_classes_stream_count);
+ trace->stream_classes_stream_count = NULL;
}
BT_LOGD_STR("Putting packet header field classe.");
bt_object_put_ref(trace->packet_header_fc);
+ trace->packet_header_fc = NULL;
g_free(trace);
}
void bt_value_string_destroy(struct bt_value *object)
{
g_string_free(BT_VALUE_TO_STRING(object)->gstr, TRUE);
+ BT_VALUE_TO_STRING(object)->gstr = NULL;
}
static
* of putting each contained object.
*/
g_ptr_array_free(BT_VALUE_TO_ARRAY(object)->garray, TRUE);
+ BT_VALUE_TO_ARRAY(object)->garray = NULL;
}
static
* be destroyed anyway.
*/
g_hash_table_destroy(BT_VALUE_TO_MAP(object)->ght);
+ BT_VALUE_TO_MAP(object)->ght = NULL;
}
static