--- rpl/src/gestion_variables.c 2010/07/14 14:19:34 1.11 +++ rpl/src/gestion_variables.c 2010/07/24 18:01:12 1.12 @@ -45,6 +45,8 @@ creation_variable(struct_processus *s_et unsigned char autorisation_creation_variable_statique, unsigned char autorisation_creation_variable_partagee) { + logical1 presence; + long i; struct_variable *s_nouvelle_base; @@ -214,7 +216,40 @@ creation_variable(struct_processus *s_et } } - (*s_etat_processus).s_liste_variables[i + 1] = (*s_variable); + if ((*s_variable).niveau > 1) + { + // Cas d'une variable locale + (*s_etat_processus).s_liste_variables[i + 1] = (*s_variable); + } + else + { + // Cas d'une variable globale + presence = d_faux; + + for(; i >= 0; i--) + { + if (strcmp((*s_variable).nom, + (*s_etat_processus).s_liste_variables[i].nom) == 0) + { + (*s_etat_processus).s_liste_variables[i + 1] = + (*s_etat_processus).s_liste_variables[i]; + } + else + { + presence = d_vrai; + break; + } + } + + if (presence = d_faux) + { + (*s_etat_processus).s_liste_variables[0] = (*s_variable); + } + else + { + (*s_etat_processus).s_liste_variables[i + 1] = (*s_variable); + } + } } return(d_absence_erreur);