--- rpl/src/gestion_variables.c 2015/09/18 13:41:11 1.94 +++ rpl/src/gestion_variables.c 2015/10/22 18:37:09 1.95 @@ -1858,6 +1858,57 @@ nombre_variables_locales(struct_processu } +static void +reinitialisation_recursive_mutexes_variables_partagees( + struct_processus *s_etat_processus, + struct_arbre_variables_partagees *l_element_courant) +{ + integer8 i; + + struct_liste_variables_partagees *l_variable; + + if (l_element_courant == NULL) + { + return; + } + + pthread_mutex_destroy(&((*l_element_courant).mutex_feuille)); + INITIALISATION_MUTEX((*l_element_courant).mutex_feuille); + + if ((*l_element_courant).feuille != NULL) + { + l_variable = (*l_element_courant).feuille; + + do + { + pthread_mutex_destroy(&((*(*l_variable).variable).mutex)); + INITIALISATION_MUTEX((*(*l_variable).variable).mutex); + l_variable = (*l_variable).suivant; + } while(l_variable != NULL); + } + + for(i = 0; i < (*s_etat_processus).nombre_caracteres_variables; i++) + { + if ((*l_element_courant).noeuds[i] != NULL) + { + reinitialisation_recursive_mutexes_variables_partagees( + s_etat_processus, (*l_element_courant).noeuds[i]); + } + } + + return; +} + + +void +reinitialisation_mutexes_variables_partagees(struct_processus *s_etat_processus) +{ + reinitialisation_recursive_mutexes_variables_partagees(s_etat_processus, + (*(*s_etat_processus).s_arbre_variables_partagees)); + return; +} + + static integer8 nombre_variables_partagees(struct_processus *s_etat_processus, struct_arbre_variables_partagees *l_element_courant)