--- rpl/src/gestion_variables.c 2013/03/22 15:31:19 1.71 +++ rpl/src/gestion_variables.c 2013/03/23 16:14:39 1.72 @@ -1953,7 +1953,7 @@ liste_variables_locales(struct_processus if (l_element_courant == NULL) { - return(0); + return(position); } if ((*l_element_courant).feuille != NULL) @@ -1973,8 +1973,10 @@ liste_variables_locales(struct_processus tableau[position].variable_partagee = (*(*l_variable).variable).variable_partagee; tableau[position].variable_masquee = d_faux; + tableau[position].mutex = NULL; position++; + l_variable = (*l_variable).suivant; } while(l_variable != (*l_element_courant).feuille); } @@ -1991,8 +1993,8 @@ liste_variables_locales(struct_processus tableau[position].nom = (*(*l_variable_statique).variable).nom; tableau[position].niveau = (*(*l_variable_statique).variable).niveau; - tableau[position].objet = - (*(*l_variable_statique).variable).objet; + tableau[position].objet = (*(*l_variable_statique).variable) + .objet; tableau[position].variable_verrouillee = d_faux; tableau[position].variable_statique = (*(*l_variable_statique).variable).variable_statique; @@ -2030,7 +2032,7 @@ liste_variables_partagees(struct_process if (l_element_courant == NULL) { - return(0); + return(position); } // mutex_liste_variables_partagees @@ -2050,6 +2052,7 @@ liste_variables_partagees(struct_process (*(*l_variable).variable).variable_partagee; tableau[position].variable_partagee.pointeur = NULL; tableau[position].variable_masquee = d_faux; + tableau[position].mutex = &((*(*l_variable).variable).mutex); position++; @@ -2066,6 +2069,12 @@ liste_variables_partagees(struct_process } } + if (pthread_mutex_unlock(&((*l_element_courant).mutex_feuille)) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return(0); + } + return(position); } @@ -2102,7 +2111,7 @@ liste_variables(struct_processus *s_etat nombre_elements = liste_variables_locales(s_etat_processus, tableau, 0, (*s_etat_processus).s_arbre_variables); - nombre_elements += liste_variables_partagees(s_etat_processus, + nombre_elements = liste_variables_partagees(s_etat_processus, tableau, nombre_elements, (*(*s_etat_processus) .s_arbre_variables_partagees));