From 6be900fe3f149eede7dd54719b172757556a4e81 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 9 Feb 2012 13:10:36 +0100 Subject: [PATCH] Avoid to duplicate initialization list. Declare a global that is initialized with XBT_RUNNING_CTX_INITIALIZER, and take a copy of it in XBT_RUNNING_CTX_INITIALIZE(). --- include/xbt/ex.h | 30 +++--------------------------- src/xbt/ex.c | 2 ++ 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/include/xbt/ex.h b/include/xbt/ex.h index 77b1967708..97e4eeacac 100644 --- a/include/xbt/ex.h +++ b/include/xbt/ex.h @@ -306,33 +306,9 @@ typedef struct { { NULL, 0, { /* content */ NULL, unknown_error, 0, \ /* throw point*/ 0,NULL, NULL,0, NULL, 0, NULL,\ /* backtrace */ 0, NULL, /* bt[] */ } } -#define XBT_RUNNING_CTX_INITIALIZE(ctx) \ - do { \ - (ctx)->ctx_mctx = NULL; \ - (ctx)->ctx_caught = 0; \ - (ctx)->exception.msg = NULL; \ - (ctx)->exception.category = 0; \ - (ctx)->exception.value = 0; \ - (ctx)->exception.remote = 0; \ - (ctx)->exception.host = NULL; \ - (ctx)->exception.procname = NULL; \ - (ctx)->exception.pid = 0; \ - (ctx)->exception.file = NULL; \ - (ctx)->exception.line = 0; \ - (ctx)->exception.func = NULL; \ - (ctx)->exception.bt[0] = NULL; \ - (ctx)->exception.bt[1] = NULL; \ - (ctx)->exception.bt[2] = NULL; \ - (ctx)->exception.bt[3] = NULL; \ - (ctx)->exception.bt[4] = NULL; \ - (ctx)->exception.bt[5] = NULL; \ - (ctx)->exception.bt[6] = NULL; \ - (ctx)->exception.bt[7] = NULL; \ - (ctx)->exception.bt[8] = NULL; \ - (ctx)->exception.bt[9] = NULL; \ - (ctx)->exception.used = 0; \ - (ctx)->exception.bt_strings = NULL; \ - } while (0) + +XBT_PUBLIC_DATA(const xbt_running_ctx_t) __xbt_ex_ctx_initializer; +#define XBT_RUNNING_CTX_INITIALIZE(ctx) (*(ctx) = __xbt_ex_ctx_initializer) /* the exception context */ typedef xbt_running_ctx_t *(*xbt_running_ctx_fetcher_t) (void); diff --git a/src/xbt/ex.c b/src/xbt/ex.c index 9768d5e640..bc84c03ff5 100644 --- a/src/xbt/ex.c +++ b/src/xbt/ex.c @@ -65,6 +65,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ex, xbt, "Exception mecanism"); +XBT_EXPORT_NO_IMPORT(const xbt_running_ctx_t) __xbt_ex_ctx_initializer = XBT_RUNNING_CTX_INITIALIZER; + /* default __ex_ctx callback function */ xbt_running_ctx_t *__xbt_ex_ctx_default(void) { -- 2.20.1