--- rpl/src/gestion_variables.c 2012/10/08 07:37:06 1.63 +++ rpl/src/gestion_variables.c 2012/12/13 16:59:41 1.64 @@ -427,9 +427,12 @@ ajout_variable(struct_processus *s_etat_ (*(*s_etat_processus).s_arbre_variables).feuille = NULL; (*(*s_etat_processus).s_arbre_variables).feuille_statique = NULL; + (*(*s_etat_processus).s_arbre_variables).feuille_partagee = NULL; (*(*s_etat_processus).s_arbre_variables).noeuds_utilises = 0; (*(*s_etat_processus).s_arbre_variables).indice_tableau_pere = -1; (*(*s_etat_processus).s_arbre_variables).noeud_pere = NULL; + INITIALISATION_MUTEX((*(*s_etat_processus).s_arbre_variables) + .mutex_feuille_partagee); if (((*(*s_etat_processus).s_arbre_variables).noeuds = allocation_tableau_noeuds(s_etat_processus)) == NULL) @@ -480,7 +483,13 @@ ajout_variable(struct_processus *s_etat_ .pointeurs_caracteres_variables[*ptr]]).feuille_statique = NULL; (*(*l_variable_courante).noeuds[(*s_etat_processus) + .pointeurs_caracteres_variables[*ptr]]).feuille_partagee + = NULL; + (*(*l_variable_courante).noeuds[(*s_etat_processus) .pointeurs_caracteres_variables[*ptr]]).noeuds_utilises = 0; + INITIALISATION_MUTEX((*(*l_variable_courante).noeuds + [(*s_etat_processus).pointeurs_caracteres_variables[*ptr]]) + .mutex_feuille_partagee); // Le champ noeud_pere de la structure créée pointe sur // la structure parente et l'indice tableau_pere correspond à la @@ -1297,7 +1306,8 @@ retrait_variable(struct_processus *s_eta .feuille = NULL; while(((*s_arbre_courant).noeuds_utilises == 0) && - ((*s_arbre_courant).feuille_statique == NULL)) + ((*s_arbre_courant).feuille_statique == NULL) && + ((*s_arbre_courant).feuille_partagee == NULL)) { s_arbre_a_supprimer = s_arbre_courant; s_arbre_courant = (*s_arbre_courant).noeud_pere;