Diff for /rpl/src/instructions_p7.c between versions 1.23 and 1.24

version 1.23, 2011/04/21 16:00:58 version 1.24, 2011/06/10 11:35:13
Line 94  instruction_protect(struct_processus *s_ Line 94  instruction_protect(struct_processus *s_
             return;              return;
         }          }
   
         ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          (*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante]).variable_verrouillee = d_vrai;                  .variable_verrouillee = d_vrai;
     }      }
     else if ((*s_objet).type == LST)      else if ((*s_objet).type == LST)
     {      {
Line 122  instruction_protect(struct_processus *s_ Line 122  instruction_protect(struct_processus *s_
                 return;                  return;
             }              }
   
             ((*s_etat_processus).s_liste_variables[(*s_etat_processus)              (*(*s_etat_processus).pointeur_variable_courante)
                     .position_variable_courante]).variable_verrouillee = d_vrai;                      .variable_verrouillee = d_vrai;
   
             l_element_courant = (*l_element_courant).suivant;              l_element_courant = (*l_element_courant).suivant;
         }          }
Line 157  instruction_protect(struct_processus *s_ Line 157  instruction_protect(struct_processus *s_
 void  void
 instruction_parameter(struct_processus *s_etat_processus)  instruction_parameter(struct_processus *s_etat_processus)
 {  {
     logical1                            presence_variable;  
   
     long                                i;  
   
     struct_liste_chainee                *l_element_courant;      struct_liste_chainee                *l_element_courant;
   
     struct_objet                        *s_objet;      struct_objet                        *s_objet;
Line 207  instruction_parameter(struct_processus * Line 203  instruction_parameter(struct_processus *
   
     if ((*s_objet).type == NOM)      if ((*s_objet).type == NOM)
     {      {
         if (recherche_variable(s_etat_processus, ((*((struct_nom *)          if (recherche_variable_globale(s_etat_processus, ((*((struct_nom *)
                 (*s_objet).objet)).nom)) == d_faux)                  (*s_objet).objet)).nom)) == d_faux)
         {          {
             liberation(s_etat_processus, s_objet);              liberation(s_etat_processus, s_objet);
Line 217  instruction_parameter(struct_processus * Line 213  instruction_parameter(struct_processus *
             return;              return;
         }          }
   
         i = (*s_etat_processus).position_variable_courante;          (*(*s_etat_processus).pointeur_variable_courante)
         presence_variable = d_faux;                  .variable_verrouillee = d_vrai;
   
         while(i >= 0)  
         {  
             if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,  
                     (*((struct_nom *) (*s_objet).objet)).nom) == 0)  
                     && ((*s_etat_processus).s_liste_variables[i].niveau == 1))  
             {  
                 presence_variable = d_vrai;  
                 break;  
             }  
   
             i--;  
         }  
   
         (*s_etat_processus).position_variable_courante = i;  
   
         if (presence_variable == d_faux)  
         {  
             liberation(s_etat_processus, s_objet);  
   
             (*s_etat_processus).erreur_execution = d_ex_variable_non_definie;  
             return;  
         }  
   
         ((*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                 .position_variable_courante]).variable_verrouillee = d_vrai;  
     }      }
     else if ((*s_objet).type == LST)      else if ((*s_objet).type == LST)
     {      {
Line 260  instruction_parameter(struct_processus * Line 230  instruction_parameter(struct_processus *
                 return;                  return;
             }              }
   
             if (recherche_variable(s_etat_processus, (*((struct_nom *)              if (recherche_variable_globale(s_etat_processus, (*((struct_nom *)
                     (*(*l_element_courant).donnee).objet)).nom) == d_faux)                      (*(*l_element_courant).donnee).objet)).nom) == d_faux)
             {              {
                 liberation(s_etat_processus, s_objet);                  liberation(s_etat_processus, s_objet);
Line 271  instruction_parameter(struct_processus * Line 241  instruction_parameter(struct_processus *
                 return;                  return;
             }              }
   
             i = (*s_etat_processus).position_variable_courante;              (*(*s_etat_processus).pointeur_variable_courante)
             presence_variable = d_faux;                      .variable_verrouillee = d_vrai;
   
             while(i >= 0)  
             {  
                 if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,  
                         (*((struct_nom *) (*(*l_element_courant).donnee)  
                         .objet)).nom) == 0) && ((*s_etat_processus)  
                         .s_liste_variables[i].niveau == 1))  
                 {  
                     presence_variable = d_vrai;  
                     break;  
                 }  
   
                 i--;  
             }  
   
             (*s_etat_processus).position_variable_courante = i;  
   
             if (presence_variable == d_faux)  
             {  
                 liberation(s_etat_processus, s_objet);  
   
                 (*s_etat_processus).erreur_execution =  
                         d_ex_variable_non_definie;  
                 return;  
             }  
   
             ((*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante]).variable_verrouillee = d_vrai;  
   
             l_element_courant = (*l_element_courant).suivant;              l_element_courant = (*l_element_courant).suivant;
         }          }
Line 1350  instruction_private(struct_processus *s_ Line 1292  instruction_private(struct_processus *s_
         }          }
   
         if (recherche_variable_partagee(s_etat_processus, ((*((struct_nom *)          if (recherche_variable_partagee(s_etat_processus, ((*((struct_nom *)
                 (*s_objet).objet)).nom), ((*s_etat_processus).s_liste_variables                  (*s_objet).objet)).nom), (*(*s_etat_processus)
                 [(*s_etat_processus).position_variable_courante])                  .pointeur_variable_courante).variable_partagee,
                 .variable_partagee, ((*s_etat_processus).s_liste_variables                  (*(*s_etat_processus).pointeur_variable_courante).origine)
                 [(*s_etat_processus).position_variable_courante]).origine)  
                 == d_faux)                  == d_faux)
         {          {
             if (pthread_mutex_unlock(&((*(*s_etat_processus)              if (pthread_mutex_unlock(&((*(*s_etat_processus)
Line 1369  instruction_private(struct_processus *s_ Line 1310  instruction_private(struct_processus *s_
             return;              return;
         }          }
   
         (*s_etat_processus).s_liste_variables[(*s_etat_processus)          (*(*s_etat_processus).pointeur_variable_courante).objet =
                 .position_variable_courante].objet =  
                 (*(*s_etat_processus).s_liste_variables_partagees).table                  (*(*s_etat_processus).s_liste_variables_partagees).table
                 [(*(*s_etat_processus).s_liste_variables_partagees)                  [(*(*s_etat_processus).s_liste_variables_partagees)
                 .position_variable].objet;                  .position_variable].objet;
Line 1380  instruction_private(struct_processus *s_ Line 1320  instruction_private(struct_processus *s_
   
         if (retrait_variable_partagee(s_etat_processus,          if (retrait_variable_partagee(s_etat_processus,
                 (*((struct_nom *) (*s_objet).objet)).nom,                  (*((struct_nom *) (*s_objet).objet)).nom,
                 (*s_etat_processus).s_liste_variables[(*s_etat_processus)                  (*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_partagee) == d_erreur)                  .variable_partagee) == d_erreur)
         {          {
             if (pthread_mutex_unlock(&((*(*s_etat_processus)              if (pthread_mutex_unlock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 1394  instruction_private(struct_processus *s_ Line 1334  instruction_private(struct_processus *s_
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).origine == 'P')
                 .position_variable_courante].origine == 'P')  
         {          {
             (*s_etat_processus).s_liste_variables[(*s_etat_processus)              (*(*s_etat_processus).pointeur_variable_courante)
                     .position_variable_courante].variable_partagee.adresse = 0;                      .variable_partagee.adresse = 0;
         }          }
         else          else
         {          {
             (*s_etat_processus).s_liste_variables[(*s_etat_processus)              (*(*s_etat_processus).pointeur_variable_courante)
                     .position_variable_courante].variable_partagee.pointeur                      .variable_partagee.pointeur = NULL;
                     = NULL;  
         }          }
   
         if (pthread_mutex_unlock(&((*(*s_etat_processus)          if (pthread_mutex_unlock(&((*(*s_etat_processus)
Line 1447  instruction_private(struct_processus *s_ Line 1385  instruction_private(struct_processus *s_
             }              }
   
             if (recherche_variable_partagee(s_etat_processus, ((*((struct_nom *)              if (recherche_variable_partagee(s_etat_processus, ((*((struct_nom *)
                     (*s_objet).objet)).nom), ((*s_etat_processus)                      (*s_objet).objet)).nom), (*(*s_etat_processus)
                     .s_liste_variables[(*s_etat_processus)                      .pointeur_variable_courante).variable_partagee,
                     .position_variable_courante]).variable_partagee,                      (*(*s_etat_processus).pointeur_variable_courante).origine)
                     ((*s_etat_processus).s_liste_variables  
                     [(*s_etat_processus).position_variable_courante]).origine)  
                     == d_faux)                      == d_faux)
             {              {
                 if (pthread_mutex_unlock(&((*(*s_etat_processus)                  if (pthread_mutex_unlock(&((*(*s_etat_processus)
Line 1469  instruction_private(struct_processus *s_ Line 1405  instruction_private(struct_processus *s_
                 return;                  return;
             }              }
   
             (*s_etat_processus).s_liste_variables[(*s_etat_processus)              (*(*s_etat_processus).pointeur_variable_courante).objet =
                     .position_variable_courante].objet =  
                     (*(*s_etat_processus).s_liste_variables_partagees).table                      (*(*s_etat_processus).s_liste_variables_partagees).table
                     [(*(*s_etat_processus).s_liste_variables_partagees)                      [(*(*s_etat_processus).s_liste_variables_partagees)
                     .position_variable].objet;                      .position_variable].objet;
Line 1478  instruction_private(struct_processus *s_ Line 1413  instruction_private(struct_processus *s_
                     [(*(*s_etat_processus).s_liste_variables_partagees)                      [(*(*s_etat_processus).s_liste_variables_partagees)
                     .position_variable].objet = NULL;                      .position_variable].objet = NULL;
   
             if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)              if ((*(*s_etat_processus).pointeur_variable_courante).origine
                     .position_variable_courante].origine == 'P')                      == 'P')
             {              {
                 (*s_etat_processus).s_liste_variables[(*s_etat_processus)                  (*(*s_etat_processus).pointeur_variable_courante)
                         .position_variable_courante].variable_partagee.adresse                          .variable_partagee.adresse = 0;
                         = 0;  
             }              }
             else              else
             {              {
                 (*s_etat_processus).s_liste_variables[(*s_etat_processus)                  (*(*s_etat_processus).pointeur_variable_courante)
                         .position_variable_courante].variable_partagee.pointeur                          .variable_partagee.pointeur = NULL;
                         = NULL;  
             }              }
   
             if (retrait_variable_partagee(s_etat_processus,              if (retrait_variable_partagee(s_etat_processus,
                     (*((struct_nom *) (*s_objet).objet)).nom,                      (*((struct_nom *) (*s_objet).objet)).nom,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .position_variable_courante].variable_statique) == d_erreur)                      .variable_statique) == d_erreur)
             {              {
                 if (pthread_mutex_unlock(&((*(*s_etat_processus)                  if (pthread_mutex_unlock(&((*(*s_etat_processus)
                         .s_liste_variables_partagees).mutex)) != 0)                          .s_liste_variables_partagees).mutex)) != 0)

Removed from v.1.23  
changed lines
  Added in v.1.24


CVSweb interface <joel.bertrand@systella.fr>