--- rpl/src/interruptions.c 2012/12/13 16:59:42 1.110 +++ rpl/src/interruptions.c 2012/12/17 21:22:44 1.111 @@ -544,6 +544,12 @@ liberation_threads(struct_processus *s_e struct_processus *candidat; + struct_liste_variables_partagees *l_element_partage_courant; + struct_liste_variables_partagees *l_element_partage_suivant; + + struct_liste_variables_statiques *l_element_statique_courant; + struct_liste_variables_statiques *l_element_statique_suivant; + unsigned long i; void *element_candidat; @@ -765,12 +771,34 @@ liberation_threads(struct_processus *s_e suppression_variables_partagees = d_vrai; liberation_arbre_variables_partagees(s_etat_processus, - (*s_etat_processus).s_arbre_variables); + (*(*s_etat_processus).s_arbre_variables_partagees)); + + l_element_partage_courant = (*(*s_etat_processus) + .l_liste_variables_partagees); + + while(l_element_partage_courant != NULL) + { + l_element_partage_suivant = + (*l_element_partage_courant).suivant; + free(l_element_partage_courant); + l_element_partage_courant = l_element_partage_suivant; + } } liberation_arbre_variables(s_etat_processus, (*s_etat_processus).s_arbre_variables, d_faux); + l_element_statique_courant = (*s_etat_processus) + .l_liste_variables_statiques; + + while(l_element_statique_courant != NULL) + { + l_element_statique_suivant = + (*l_element_statique_courant).suivant; + free(l_element_statique_courant); + l_element_statique_courant = l_element_statique_suivant; + } + element_courant = (*s_etat_processus).l_base_pile; while(element_courant != NULL) {