--- rpl/src/interruptions.c 2012/10/17 14:27:06 1.109 +++ rpl/src/interruptions.c 2012/12/13 16:59:42 1.110 @@ -759,43 +759,18 @@ liberation_threads(struct_processus *s_e } } - liberation_arbre_variables(s_etat_processus, - (*s_etat_processus).s_arbre_variables, d_faux); - - // Ne peut être effacé qu'une seule fois + // ne peut être effacé qu'une seule fois if (suppression_variables_partagees == d_faux) { suppression_variables_partagees = d_vrai; - for(i = 0; i < (*(*s_etat_processus) - .s_liste_variables_partagees).nombre_variables; i++) - { - pthread_mutex_trylock(&((*(*(*s_etat_processus) - .s_liste_variables_partagees).table[i].objet) - .mutex)); - pthread_mutex_unlock(&((*(*(*s_etat_processus) - .s_liste_variables_partagees).table[i].objet) - .mutex)); - - liberation(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table[i].objet); - free((*(*s_etat_processus).s_liste_variables_partagees) - .table[i].nom); - } - - if ((*(*s_etat_processus).s_liste_variables_partagees).table - != NULL) - { - free((struct_variable_partagee *) (*(*s_etat_processus) - .s_liste_variables_partagees).table); - } - - pthread_mutex_trylock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)); - pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)); + liberation_arbre_variables_partagees(s_etat_processus, + (*s_etat_processus).s_arbre_variables); } + liberation_arbre_variables(s_etat_processus, + (*s_etat_processus).s_arbre_variables, d_faux); + element_courant = (*s_etat_processus).l_base_pile; while(element_courant != NULL) {