Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
free the callback list on gras_process_exit
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 5 Jul 2004 23:34:03 +0000 (23:34 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 5 Jul 2004 23:34:03 +0000 (23:34 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@170 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/gras/Msg/msg.c
src/gras/Msg/msg_interface.h
src/gras/Virtu/process.c

index 7390f13..706c52e 100644 (file)
@@ -400,6 +400,15 @@ gras_msg_handle(double timeOut) {
   return mismatch_error;
 }
 
   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) {
 gras_error_t
 gras_cb_register(gras_msgtype_t *msgtype,
                 gras_cb_t cb) {
index 4facead..390a345 100644 (file)
@@ -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;
 #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 */
 #endif  /* GRAS_MSG_INTERFACE_H */
index 50676f8..ef02c5d 100644 (file)
@@ -33,9 +33,9 @@ gras_procdata_init() {
   gras_error_t errcode;
   gras_procdata_t *pd=gras_procdata_get();
   pd->userdata = NULL;
   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;
 }
 
   return no_error;
 }