X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fplugin%2Fplugin-so.c;h=1c3e348a04b759d07dcd5b56944fa99f84be37b7;hb=398454ed067b95215c7affbe265fd36edab931ee;hp=b875ad68953598b5a2217977e96725d3e136d54f;hpb=d94d92ac6656fd252a5d7bb4f6c76935ba18e62e;p=babeltrace.git diff --git a/lib/plugin/plugin-so.c b/lib/plugin/plugin-so.c index b875ad68..1c3e348a 100644 --- a/lib/plugin/plugin-so.c +++ b/lib/plugin/plugin-so.c @@ -148,6 +148,8 @@ void bt_plugin_so_shared_lib_handle_destroy(struct bt_object *obj) BT_LOGE("Cannot close GModule: %s: path=\"%s\"", g_module_error(), path); } + + shared_lib_handle->module = NULL; #ifndef NDEBUG } else { BT_LOGD("Not closing GModule because `BABELTRACE_NO_DLCLOSE=1`: " @@ -158,6 +160,7 @@ void bt_plugin_so_shared_lib_handle_destroy(struct bt_object *obj) if (shared_lib_handle->path) { g_string_free(shared_lib_handle->path, TRUE); + shared_lib_handle->path = NULL; } g_free(shared_lib_handle); @@ -709,21 +712,21 @@ enum bt_plugin_status bt_plugin_so_init( src_comp_class = bt_private_component_class_source_create( cc_full_descr->descriptor->name, cc_full_descr->descriptor->methods.source.notif_iter_next); - comp_class = bt_private_component_class_source_borrow_private_component_class( + comp_class = bt_private_component_class_source_as_private_component_class( src_comp_class); break; case BT_COMPONENT_CLASS_TYPE_FILTER: flt_comp_class = bt_private_component_class_filter_create( cc_full_descr->descriptor->name, cc_full_descr->descriptor->methods.source.notif_iter_next); - comp_class = bt_private_component_class_filter_borrow_private_component_class( + comp_class = bt_private_component_class_filter_as_private_component_class( flt_comp_class); break; case BT_COMPONENT_CLASS_TYPE_SINK: sink_comp_class = bt_private_component_class_sink_create( cc_full_descr->descriptor->name, cc_full_descr->descriptor->methods.sink.consume); - comp_class = bt_private_component_class_sink_borrow_private_component_class( + comp_class = bt_private_component_class_sink_as_private_component_class( sink_comp_class); break; default: @@ -1127,7 +1130,8 @@ struct bt_plugin *bt_plugin_so_create_empty( } spec = plugin->spec_data; - spec->shared_lib_handle = bt_object_get_ref(shared_lib_handle); + spec->shared_lib_handle = shared_lib_handle; + bt_object_get_no_null_check(spec->shared_lib_handle); goto end; error: @@ -1495,7 +1499,8 @@ void bt_plugin_so_on_add_component_class(struct bt_plugin *plugin, BT_ASSERT(plugin->type == BT_PLUGIN_TYPE_SO); bt_list_add(&comp_class->node, &component_class_list); - comp_class->so_handle = bt_object_get_ref(spec->shared_lib_handle); + comp_class->so_handle = spec->shared_lib_handle; + bt_object_get_no_null_check(comp_class->so_handle); /* Add our custom destroy listener */ bt_component_class_add_destroy_listener(comp_class,