X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Ferror.c;h=bd8259ab71057103385d75b711ffd59a5508007a;hb=6ef39fe95fc5956397585fedb4424376b08d8d0e;hp=58a3749816b8f34efffb2ca3934a208171063350;hpb=d5b13b9b6a434797f856547be1ca6a59f70ba530;p=babeltrace.git diff --git a/src/lib/error.c b/src/lib/error.c index 58a37498..bd8259ab 100644 --- a/src/lib/error.c +++ b/src/lib/error.c @@ -19,8 +19,9 @@ #include "lib/assert-cond.h" #include "lib/func-status.h" -#define BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(_cause, _exp_type) \ - BT_ASSERT_PRE(((const struct bt_error_cause *) (_cause))->actor_type == _exp_type, \ +#define BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(_cause, _exp_type_name, _exp_type) \ + BT_ASSERT_PRE("error-cause-has-" _exp_type_name "-actor", \ + ((const struct bt_error_cause *) (_cause))->actor_type == _exp_type, \ "Unexpected error cause's actor type: type=%s, exp-type=%s", \ bt_error_cause_actor_type_string(((const struct bt_error_cause *) (_cause))->actor_type), \ bt_error_cause_actor_type_string(_exp_type)) @@ -299,8 +300,10 @@ struct bt_error_cause_component_actor *create_error_cause_component_actor( goto end; error: - destroy_error_cause(&cause->base); - cause = NULL; + if (cause) { + destroy_error_cause(&cause->base); + cause = NULL; + } end: return cause; @@ -340,8 +343,10 @@ create_error_cause_component_class_actor(struct bt_component_class *comp_cls, goto end; error: - destroy_error_cause(&cause->base); - cause = NULL; + if (cause) { + destroy_error_cause(&cause->base); + cause = NULL; + } end: return cause; @@ -406,8 +411,10 @@ create_error_cause_message_iterator_actor(struct bt_message_iterator *iter, goto end; error: - destroy_error_cause(&cause->base); - cause = NULL; + if (cause) { + destroy_error_cause(&cause->base); + cause = NULL; + } end: return cause; @@ -522,7 +529,10 @@ int bt_error_append_cause_from_component( cause = NULL; end: - destroy_error_cause(&cause->base); + if (cause) { + destroy_error_cause(&cause->base); + } + return status; } @@ -556,7 +566,10 @@ int bt_error_append_cause_from_component_class( cause = NULL; end: - destroy_error_cause(&cause->base); + if (cause) { + destroy_error_cause(&cause->base); + } + return status; } @@ -589,7 +602,10 @@ int bt_error_append_cause_from_message_iterator( cause = NULL; end: - destroy_error_cause(&cause->base); + if (cause) { + destroy_error_cause(&cause->base); + } + return status; } @@ -657,7 +673,7 @@ const char *bt_error_cause_component_actor_get_component_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "component", BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT); return spec_cause->comp_name->str; } @@ -669,7 +685,7 @@ bt_component_class_type bt_error_cause_component_actor_get_component_class_type( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "component", BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT); return spec_cause->comp_class_id.type; } @@ -681,7 +697,7 @@ const char *bt_error_cause_component_actor_get_component_class_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "component", BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT); return spec_cause->comp_class_id.name->str; } @@ -693,7 +709,7 @@ const char *bt_error_cause_component_actor_get_plugin_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "component", BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT); return spec_cause->comp_class_id.plugin_name->len > 0 ? spec_cause->comp_class_id.plugin_name->str : NULL; @@ -707,7 +723,7 @@ bt_error_cause_component_class_actor_get_component_class_type( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "component-class", BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT_CLASS); return spec_cause->comp_class_id.type; } @@ -719,7 +735,7 @@ const char *bt_error_cause_component_class_actor_get_component_class_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "component-class", BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT_CLASS); return spec_cause->comp_class_id.name->str; } @@ -731,7 +747,7 @@ const char *bt_error_cause_component_class_actor_get_plugin_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "component-class", BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT_CLASS); return spec_cause->comp_class_id.plugin_name->len > 0 ? spec_cause->comp_class_id.plugin_name->str : NULL; @@ -744,7 +760,7 @@ const char *bt_error_cause_message_iterator_actor_get_component_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "message-iterator", BT_ERROR_CAUSE_ACTOR_TYPE_MESSAGE_ITERATOR); return spec_cause->comp_name->str; } @@ -757,7 +773,7 @@ bt_error_cause_message_iterator_actor_get_component_output_port_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "message-iterator", BT_ERROR_CAUSE_ACTOR_TYPE_MESSAGE_ITERATOR); return spec_cause->output_port_name->str; } @@ -770,7 +786,7 @@ bt_error_cause_message_iterator_actor_get_component_class_type( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "message-iterator", BT_ERROR_CAUSE_ACTOR_TYPE_MESSAGE_ITERATOR); return spec_cause->comp_class_id.type; } @@ -782,7 +798,7 @@ const char *bt_error_cause_message_iterator_actor_get_component_class_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "message-iterator", BT_ERROR_CAUSE_ACTOR_TYPE_MESSAGE_ITERATOR); return spec_cause->comp_class_id.name->str; } @@ -794,7 +810,7 @@ const char *bt_error_cause_message_iterator_actor_get_plugin_name( (const void *) cause; BT_ASSERT_PRE_ERROR_CAUSE_NON_NULL(cause); - BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, + BT_ASSERT_PRE_CAUSE_HAS_ACTOR_TYPE(cause, "message-iterator", BT_ERROR_CAUSE_ACTOR_TYPE_MESSAGE_ITERATOR); return spec_cause->comp_class_id.plugin_name->len > 0 ? spec_cause->comp_class_id.plugin_name->str : NULL;