--- rpl/src/gestion_processus.c 2010/06/17 11:00:23 1.17 +++ rpl/src/gestion_processus.c 2010/06/18 11:50:42 1.18 @@ -1773,23 +1773,7 @@ surveillance_processus(void *argument) (*s_etat_processus).l_base_pile_processus = (*l_element_courant).suivant; - (*(*((struct_processus_fils *) (*(*l_element_courant) - .donnee).objet)).thread).nombre_references--; - - // Cette référence ne peut être nulle car l'objet est encore - // référencé par la liste des threads de surveillance. - - BUG((*(*((struct_processus_fils *) (*(*l_element_courant) - .donnee).objet)).thread).nombre_references <= 0, - uprintf("(*(*((struct_processus_fils *) " - "(*(*l_element_courant).donnee).objet)).thread)" - ".nombre_references = %d\n", - (*(*((struct_processus_fils *) - (*(*l_element_courant).donnee).objet)).thread) - .nombre_references)); - - free((*(*l_element_courant).donnee).objet); - free((*l_element_courant).donnee); + liberation(s_etat_processus, (*l_element_courant).donnee); free(l_element_courant); l_element_courant = (struct_liste_chainee *) @@ -1800,23 +1784,7 @@ surveillance_processus(void *argument) (*l_element_precedent).suivant = (*l_element_courant).suivant; - (*(*((struct_processus_fils *) (*(*l_element_courant) - .donnee).objet)).thread).nombre_references--; - - // Cette référence ne peut être nulle car l'objet est encore - // référencé par la liste des threads de surveillance. - - BUG((*(*((struct_processus_fils *) (*(*l_element_courant) - .donnee).objet)).thread).nombre_references <= 0, - uprintf("(*(*((struct_processus_fils *) " - "(*(*l_element_courant).donnee).objet)).thread)" - ".nombre_references = %d\n", - (*(*((struct_processus_fils *) - (*(*l_element_courant).donnee).objet)).thread) - .nombre_references)); - - free((*(*l_element_courant).donnee).objet); - free((*l_element_courant).donnee); + liberation(s_etat_processus, (*l_element_courant).donnee); free(l_element_courant); }