Diff for /rpl/src/gestion_variables.c between versions 1.29 and 1.30

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

Removed from v.1.29  
changed lines
  Added in v.1.30


CVSweb interface <joel.bertrand@systella.fr>