X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fcomponent.c;h=65978e944cab83f5b1ce18f0070d437ee382ad2a;hb=7704a0af9f2275321f8294df8c02f8a299b3134e;hp=2aed6932ffad144d9ed69b24acaeca9ba3cfb5ff;hpb=253a9ecc0641040e126ea2ed31c1183aa5d1276c;p=babeltrace.git diff --git a/src/lib/graph/component.c b/src/lib/graph/component.c index 2aed6932..65978e94 100644 --- a/src/lib/graph/component.c +++ b/src/lib/graph/component.c @@ -29,11 +29,8 @@ #include "lib/assert-pre.h" #include "lib/assert-post.h" #include -#include -#include -#include -#include -#include +#include +#include #include "common/macros.h" #include "compat/compiler.h" #include @@ -100,13 +97,22 @@ void finalize_component(struct bt_component *comp) break; } default: - abort(); + bt_common_abort(); } if (method) { + const struct bt_error *saved_error; + + saved_error = bt_current_thread_take_error(); + BT_LIB_LOGI("Calling user's component finalization method: " "%![comp-]+c", comp); method(comp); + BT_ASSERT_POST_NO_ERROR(); + + if (saved_error) { + BT_CURRENT_THREAD_MOVE_ERROR_AND_RESET(saved_error); + } } } @@ -307,7 +313,7 @@ int bt_component_create(struct bt_component_class *component_class, bt_object_init_shared_with_parent(&component->base, destroy_component); component->class = component_class; - bt_object_get_no_null_check(component->class); + bt_object_get_ref_no_null_check(component->class); component->destroy = component_destroy_funcs[type]; component->name = g_string_new(name); if (!component->name) { @@ -501,7 +507,7 @@ bt_component_port_connected( method = (method_t) src_cc->methods.output_port_connected; break; default: - abort(); + bt_common_abort(); } break; @@ -518,7 +524,7 @@ bt_component_port_connected( method = (method_t) flt_cc->methods.output_port_connected; break; default: - abort(); + bt_common_abort(); } break; @@ -532,13 +538,13 @@ bt_component_port_connected( method = (method_t) sink_cc->methods.input_port_connected; break; default: - abort(); + bt_common_abort(); } break; } default: - abort(); + bt_common_abort(); } if (method) { @@ -553,6 +559,7 @@ bt_component_port_connected( status == BT_FUNC_STATUS_MEMORY_ERROR, "Unexpected returned component status: status=%s", bt_common_func_status_string(status)); + BT_ASSERT_POST_NO_ERROR_IF_NO_ERROR_STATUS(status); } return status;