--- rpl/src/gestion_variables.c 2011/06/09 14:48:36 1.29 +++ rpl/src/gestion_variables.c 2011/06/11 09:36:31 1.30 @@ -66,7 +66,7 @@ ajout_variable(struct_processus *s_etat_ (*(*s_etat_processus).s_arbre_variables).noeuds_utilises = 0; (*(*s_etat_processus).s_arbre_variables).noeud_pere = NULL; - if (((*(*s_etat_processus).arbre_instructions).noeud = + if (((*(*s_etat_processus).s_arbre_variables).noeuds = malloc((*s_etat_processus).nombre_caracteres_variables * sizeof(struct_arbre_variables))) == NULL) { @@ -137,6 +137,7 @@ ajout_variable(struct_processus *s_etat_ if ((*l_variable_courante).feuille == NULL) { +printf("Nouvelle feuille\n"); // Aucune variable de même nom préexiste. On alloue le premier // élément de la liste doublement chaînée contenant toutes les // variables de même nom. Cette liste boucle en premier lieu sur @@ -527,7 +528,7 @@ recherche_variable(struct_processus *s_e if ((*s_etat_processus).s_arbre_variables == NULL) { (*s_etat_processus).erreur_systeme = d_es_variable_introuvable; - return d_faux; + return(d_faux); } l_variable_courante = (*s_etat_processus).s_arbre_variables; @@ -540,13 +541,16 @@ recherche_variable(struct_processus *s_e if (pointeur < 0) { // Caractère hors de l'alphabet des variables - return(d_erreur); + + (*s_etat_processus).erreur_systeme = d_es_variable_introuvable; + return(d_faux); } if ((*l_variable_courante).noeuds[pointeur] == NULL) { // Le chemin de la variable candidate n'existe pas. - return(d_erreur); + (*s_etat_processus).erreur_systeme = d_es_variable_introuvable; + return(d_faux); } l_variable_courante = (*l_variable_courante).noeuds[pointeur]; @@ -564,7 +568,7 @@ recherche_variable(struct_processus *s_e { // Problème : la pile système est vide ! (*s_etat_processus).erreur_systeme = d_es_pile_vide; - return(d_erreur); + return(d_faux); } while((*l_element_courant).retour_definition != 'Y') @@ -574,7 +578,7 @@ recherche_variable(struct_processus *s_e if (l_element_courant == NULL) { (*s_etat_processus).erreur_systeme = d_es_pile_vide; - return(d_erreur); + return(d_faux); } } @@ -589,7 +593,7 @@ recherche_variable(struct_processus *s_e (*(*l_variable_courante).feuille).variable; (*s_etat_processus).pointeur_feuille_courante = (*l_variable_courante).feuille; - return(d_absence_erreur); + return(d_vrai); } else { @@ -623,12 +627,13 @@ recherche_variable(struct_processus *s_e (*l_variable_courante).feuille; } - return(d_absence_erreur); + return(d_vrai); } } } - return(d_erreur); + (*s_etat_processus).erreur_systeme = d_es_variable_introuvable; + return(d_faux); }