From: mquinson Date: Mon, 5 Jul 2004 23:34:03 +0000 (+0000) Subject: free the callback list on gras_process_exit X-Git-Tag: v3.3~5176 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/76b2d8c9cdf908d428fef3d55c3185876978d97b free the callback list on gras_process_exit git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@170 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/gras/Msg/msg.c b/src/gras/Msg/msg.c index 7390f13828..706c52ef70 100644 --- a/src/gras/Msg/msg.c +++ b/src/gras/Msg/msg.c @@ -400,6 +400,15 @@ gras_msg_handle(double timeOut) { return mismatch_error; } +void +gras_cbl_free(void *data){ + gras_cblist_t *list=*(void**)data; + if (list) { + gras_dynar_free(list->cbs); + free(list); + } +} + gras_error_t gras_cb_register(gras_msgtype_t *msgtype, gras_cb_t cb) { diff --git a/src/gras/Msg/msg_interface.h b/src/gras/Msg/msg_interface.h index 4faceadd8b..390a345bb1 100644 --- a/src/gras/Msg/msg_interface.h +++ b/src/gras/Msg/msg_interface.h @@ -32,5 +32,5 @@ gras_error_t gras_msg_send_namev(gras_socket_t *sock, #define GRAS_PROTOCOL_VERSION '\0'; typedef struct s_gras_cblist gras_cblist_t; - +void gras_cbl_free(void *); /* virtu use that to free the memory at the end */ #endif /* GRAS_MSG_INTERFACE_H */ diff --git a/src/gras/Virtu/process.c b/src/gras/Virtu/process.c index 50676f8966..ef02c5de22 100644 --- a/src/gras/Virtu/process.c +++ b/src/gras/Virtu/process.c @@ -33,9 +33,9 @@ gras_procdata_init() { gras_error_t errcode; gras_procdata_t *pd=gras_procdata_get(); pd->userdata = NULL; - TRY(gras_dynar_new( &(pd->msg_queue), sizeof(gras_msg_t), NULL )); - TRY(gras_dynar_new( &(pd->cbl_list), sizeof(gras_cblist_t *), NULL )); - TRY(gras_dynar_new( &(pd->sockets), sizeof(gras_socket_t*), NULL)); + TRY(gras_dynar_new(&(pd->msg_queue), sizeof(gras_msg_t), NULL)); + TRY(gras_dynar_new(&(pd->cbl_list), sizeof(gras_cblist_t *),gras_cbl_free)); + TRY(gras_dynar_new(&(pd->sockets), sizeof(gras_socket_t*), NULL)); return no_error; }