Diff for /rpl/src/instructions_c6.c between versions 1.16.2.2 and 1.29

version 1.16.2.2, 2011/04/14 08:46:40 version 1.29, 2011/08/09 11:31:31
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.23    RPL/2 (R) version 4.1.3
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2011 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 38 Line 38
 void  void
 instruction_clusr(struct_processus *s_etat_processus)  instruction_clusr(struct_processus *s_etat_processus)
 {  {
     unsigned long                   i;      struct_liste_variables              *l_element_courant;
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
   
Line 73  instruction_clusr(struct_processus *s_et Line 73  instruction_clusr(struct_processus *s_et
         }          }
     }      }
   
     for(i = 0; i < (*s_etat_processus).nombre_variables; i++)      l_element_courant = (*s_etat_processus).l_liste_variables_par_niveau;
   
       if (l_element_courant == NULL)
       {
           return;
       }
   
       do
     {      {
         if (((*s_etat_processus).s_liste_variables[i]).niveau == 1)          if ((*l_element_courant).liste != NULL)
         {          {
             if (retrait_variable(s_etat_processus,              if ((*(*l_element_courant).liste).donnee != NULL)
                     ((*s_etat_processus).s_liste_variables[i]).nom, 'G')  
                     == d_erreur)  
             {              {
                 return;                  if ((*((struct_variable *) (*(*l_element_courant).liste)
                           .donnee)).niveau == 1)
                   {
                       while((*l_element_courant).liste != NULL)
                       {
                           if (retrait_variable(s_etat_processus,
                                   (*((struct_variable *) (*(*l_element_courant)
                                   .liste).donnee)).nom, 'G') == d_erreur)
                           {
                               return;
                           }
   
                           if ((*s_etat_processus).niveau_supprime == d_vrai)
                           {
                               // La dernière variable de niveau 1 a été
                               // supprimée. On sort donc de la boucle car
                               // (*l_element_courant).liste pointe sur
                               // un pointeur libérée par retrait_variable().
   
                               break;
                           }
                       }
   
                       break;
                   }
             }              }
         }          }
     }  
           l_element_courant = (*l_element_courant).precedent;
       } while(l_element_courant != (*s_etat_processus)
               .l_liste_variables_par_niveau);
   
     return;      return;
 }  }

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


CVSweb interface <joel.bertrand@systella.fr>