Diff for /rpl/src/gestion_variables_statiques.c between versions 1.38 and 1.39

version 1.38, 2012/10/07 08:18:35 version 1.39, 2012/10/07 13:44:08
Line 103  creation_variable_statique(struct_proces Line 103  creation_variable_statique(struct_proces
   
     // Ajout de la variable en tête de la liste des variables statiques      // Ajout de la variable en tête de la liste des variables statiques
   
 printf("<0>\n");  
     if ((l_nouvel_element = malloc(sizeof(struct_liste_variables_statiques)))      if ((l_nouvel_element = malloc(sizeof(struct_liste_variables_statiques)))
             == NULL)              == NULL)
     {      {
Line 289  retrait_variable_statique(struct_process Line 288  retrait_variable_statique(struct_process
   
     logical1                                erreur;      logical1                                erreur;
   
 printf("<1>\n");  
     if ((l_element_a_supprimer = recherche_variable_statique(s_etat_processus,      if ((l_element_a_supprimer = recherche_variable_statique(s_etat_processus,
             nom_variable, position, ((*s_etat_processus)              nom_variable, position, ((*s_etat_processus)
             .mode_execution_programme == 'Y') ? 'P' : 'E')) != NULL)              .mode_execution_programme == 'Y') ? 'P' : 'E')) != NULL)
     {      {
 printf("<2>\n");  
         // (*s_etat_processus).pointeur_variable_statique_courante          // (*s_etat_processus).pointeur_variable_statique_courante
         // pointe sur la variable à éliminer. Cette variable est celle qui          // pointe sur la variable à éliminer. Cette variable est celle qui
         // est présente dans l'une des feuilles statiques de l'arbre des          // est présente dans l'une des feuilles statiques de l'arbre des
Line 306  printf("<2>\n"); Line 303  printf("<2>\n");
   
         if ((*l_element_liste_a_supprimer).precedent != NULL)          if ((*l_element_liste_a_supprimer).precedent != NULL)
         {          {
               // L'élément à supprimer n'est pas le premier de la liste.
   
             (*(*l_element_liste_a_supprimer).precedent).suivant =              (*(*l_element_liste_a_supprimer).precedent).suivant =
                     (*l_element_liste_a_supprimer).suivant;                      (*l_element_liste_a_supprimer).suivant;
   
               if ((*l_element_liste_a_supprimer).suivant != NULL)
               {
                   // Il y a un élément suivant. On le chaîne.
                   (*(*l_element_liste_a_supprimer).suivant).precedent = NULL;
               }
         }          }
         else          else
         {          {
               // L'élement est le premier de la liste. S'il y a un élément
               // suivant, on le chaîne.
   
             if ((*l_element_liste_a_supprimer).suivant != NULL)              if ((*l_element_liste_a_supprimer).suivant != NULL)
             {              {
                 (*(*l_element_liste_a_supprimer).suivant).precedent = NULL;                  (*(*l_element_liste_a_supprimer).suivant).precedent = NULL;
Line 320  printf("<2>\n"); Line 328  printf("<2>\n");
                     (*l_element_liste_a_supprimer).suivant;                      (*l_element_liste_a_supprimer).suivant;
         }          }
   
         if ((*l_element_liste_a_supprimer).suivant != NULL)  
         {  
             (*(*l_element_liste_a_supprimer).suivant).precedent =  
                     (*l_element_liste_a_supprimer).precedent;  
         }  
         else  
         {  
             (*(*l_element_liste_a_supprimer).precedent).suivant = NULL;  
         }  
   
         free(l_element_liste_a_supprimer);          free(l_element_liste_a_supprimer);
   
         // Suppression depuis la feuille statique. Le champ 'precedent' ne sert          // Suppression depuis la feuille statique. Le champ 'precedent' ne sert
Line 337  printf("<2>\n"); Line 335  printf("<2>\n");
   
         if ((*l_element_a_supprimer).precedent != NULL)          if ((*l_element_a_supprimer).precedent != NULL)
         {          {
               // L'élément n'est pas le premier de la liste.
   
             (*(*l_element_a_supprimer).precedent).suivant =              (*(*l_element_a_supprimer).precedent).suivant =
                     (*l_element_a_supprimer).suivant;                      (*l_element_a_supprimer).suivant;
   
               if ((*l_element_a_supprimer).suivant != NULL)
               {
                   (*(*l_element_a_supprimer).suivant).precedent =
                           (*l_element_a_supprimer).precedent;
               }
               else
               {
                   (*(*l_element_a_supprimer).precedent).suivant = NULL;
               }
         }          }
         else          else
         {          {
             (*(*l_element_a_supprimer).suivant).precedent = NULL;              // L'élément est le premier de la liste.
   
               if ((*l_element_a_supprimer).suivant != NULL)
               {
                   (*(*l_element_a_supprimer).suivant).precedent = NULL;
               }
   
             (*(*l_element_a_supprimer).feuille).feuille_statique              (*(*l_element_a_supprimer).feuille).feuille_statique
                     = (*l_element_a_supprimer).suivant;                      = (*l_element_a_supprimer).suivant;
         }          }
   
         if ((*l_element_a_supprimer).suivant != NULL)  
         {  
             (*(*l_element_a_supprimer).suivant).precedent =  
                     (*l_element_a_supprimer).precedent;  
         }  
         else  
         {  
             (*(*l_element_a_supprimer).precedent).suivant = NULL;  
         }  
   
         liberation(s_etat_processus, (*(*l_element_a_supprimer).variable)          liberation(s_etat_processus, (*(*l_element_a_supprimer).variable)
                 .objet);                  .objet);
         free((*(*l_element_a_supprimer).variable).nom);          free((*(*l_element_a_supprimer).variable).nom);

Removed from v.1.38  
changed lines
  Added in v.1.39


CVSweb interface <joel.bertrand@systella.fr>