X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=src%2Fplugins%2Fcommon%2Fparam-validation%2Fparam-validation.c;h=216f274241dd9c3f62e56dbb84fa73499c190737;hp=ca80e888add31aa156ae4bbcec2c3730bb46d3d7;hb=27c61ce8f6ee66d910507f8a40ae5497287c943e;hpb=5a039e2a755d577a2d43eb5d9aa5d013b3a2cc6d diff --git a/src/plugins/common/param-validation/param-validation.c b/src/plugins/common/param-validation/param-validation.c index ca80e888..216f2742 100644 --- a/src/plugins/common/param-validation/param-validation.c +++ b/src/plugins/common/param-validation/param-validation.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "common/common.h" @@ -95,7 +96,7 @@ void append_scope_to_string(GString *str, g_string_append_printf(str, "[%" PRIu64 "]", elem->array_index); break; default: - abort(); + bt_common_abort(); } } @@ -155,8 +156,8 @@ enum bt_param_validation_status validate_value( struct bt_param_validation_context *ctx); static -bt_bool validate_map_value_entry(const char *key, - const bt_value *value, void *v_data) +bt_value_map_foreach_entry_const_func_status validate_map_value_entry( + const char *key, const bt_value *value, void *v_data) { struct validate_map_value_data *data = v_data; const struct bt_param_validation_map_value_entry_descr *entry = NULL; @@ -191,7 +192,9 @@ bt_bool validate_map_value_entry(const char *key, } /* Continue iterating if everything is good so far. */ - return data->status == BT_PARAM_VALIDATION_STATUS_OK; + return data->status == BT_PARAM_VALIDATION_STATUS_OK ? + BT_VALUE_MAP_FOREACH_ENTRY_CONST_FUNC_STATUS_OK : + BT_VALUE_MAP_FOREACH_ENTRY_CONST_FUNC_STATUS_INTERRUPT; } static @@ -400,10 +403,10 @@ enum bt_param_validation_status bt_param_validation_validate( struct bt_param_validation_map_value_descr map_value_descr; enum bt_param_validation_status status; - ctx.error = NULL; + memset(&ctx, '\0', sizeof(ctx)); + ctx.scope_stack = g_array_new(FALSE, FALSE, sizeof(struct validate_ctx_stack_element)); - g_ptr_array_new_with_free_func(g_free); if (!ctx.scope_stack) { status = BT_PARAM_VALIDATION_STATUS_MEMORY_ERROR; goto end; @@ -417,5 +420,9 @@ end: *error = ctx.error; ctx.error = NULL; + if (ctx.scope_stack) { + g_array_free(ctx.scope_stack, TRUE); + } + return status; }