Diff for /rpl/src/instructions_s3.c between versions 1.17 and 1.30

version 1.17, 2011/04/11 12:10:10 version 1.30, 2011/11/18 09:51:33
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.0.prerelease.0    RPL/2 (R) version 4.1.4
   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 47  instruction_sub(struct_processus *s_etat Line 47  instruction_sub(struct_processus *s_etat
     struct_objet                *s_objet_argument_3;      struct_objet                *s_objet_argument_3;
     struct_objet                *s_objet_resultat;      struct_objet                *s_objet_resultat;
   
       unsigned char               *ptr1;
       unsigned char               *ptr2;
   
     unsigned long               i;      unsigned long               i;
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
Line 144  instruction_sub(struct_processus *s_etat Line 147  instruction_sub(struct_processus *s_etat
     if ((*s_objet_argument_3).type == CHN)      if ((*s_objet_argument_3).type == CHN)
     {      {
         if ((*((integer8 *) (*s_objet_argument_1).objet)) > (integer8)          if ((*((integer8 *) (*s_objet_argument_1).objet)) > (integer8)
                 strlen((unsigned char *) (*s_objet_argument_3).objet))                  longueur_chaine(s_etat_processus,
                   (unsigned char *) (*s_objet_argument_3).objet))
         {          {
             liberation(s_etat_processus, s_objet_argument_1);              liberation(s_etat_processus, s_objet_argument_1);
             liberation(s_etat_processus, s_objet_argument_2);              liberation(s_etat_processus, s_objet_argument_2);
Line 160  instruction_sub(struct_processus *s_etat Line 164  instruction_sub(struct_processus *s_etat
             return;              return;
         }          }
   
         if (((*s_objet_resultat).objet = extraction_chaine((unsigned char *)          if ((ptr1 = pointeur_ieme_caractere(s_etat_processus, (unsigned char *)
                 (*s_objet_argument_3).objet, (*((integer8 *)                  (*s_objet_argument_3).objet, (*((integer8 *)
                 (*s_objet_argument_2).objet)), (*((integer8 *)                  (*s_objet_argument_2).objet)) - 1)) == NULL)
                 (*s_objet_argument_1).objet)))) == NULL)          {
               liberation(s_etat_processus, s_objet_argument_1);
               liberation(s_etat_processus, s_objet_argument_2);
               liberation(s_etat_processus, s_objet_argument_3);
   
               (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
               return;
           }
   
           if ((ptr2 = pointeur_ieme_caractere(s_etat_processus, ptr1,
                   (*((integer8 *) (*s_objet_argument_1).objet))
                   - ((*((integer8 *) (*s_objet_argument_2).objet)) - 1))) == NULL)
           {
               liberation(s_etat_processus, s_objet_argument_1);
               liberation(s_etat_processus, s_objet_argument_2);
               liberation(s_etat_processus, s_objet_argument_3);
   
               (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
               return;
           }
   
           if (((*s_objet_resultat).objet = malloc(((ptr2 - ptr1) + 1) *
                   sizeof(unsigned char))) == NULL)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return;              return;
         }          }
   
           strncpy((unsigned char *) (*s_objet_resultat).objet, ptr1,
                   ptr2 - ptr1)[ptr2 - ptr1] = d_code_fin_chaine;
     }      }
   
 /*  /*
Line 436  instruction_sto_plus(struct_processus *s Line 465  instruction_sto_plus(struct_processus *s
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
             liberation(s_etat_processus, s_objet_2);              liberation(s_etat_processus, s_objet_2);
Line 456  instruction_sto_plus(struct_processus *s Line 485  instruction_sto_plus(struct_processus *s
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 467  instruction_sto_plus(struct_processus *s Line 495  instruction_sto_plus(struct_processus *s
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 536  instruction_sto_plus(struct_processus *s Line 562  instruction_sto_plus(struct_processus *s
         else          else
         {          {
             if ((s_objet_3 = copie_objet(s_etat_processus,              if ((s_objet_3 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 671  instruction_sto_plus(struct_processus *s Line 696  instruction_sto_plus(struct_processus *s
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 728  instruction_sto_plus(struct_processus *s Line 752  instruction_sto_plus(struct_processus *s
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
             liberation(s_etat_processus, s_objet_2);              liberation(s_etat_processus, s_objet_2);
Line 748  instruction_sto_plus(struct_processus *s Line 772  instruction_sto_plus(struct_processus *s
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 759  instruction_sto_plus(struct_processus *s Line 782  instruction_sto_plus(struct_processus *s
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 828  instruction_sto_plus(struct_processus *s Line 849  instruction_sto_plus(struct_processus *s
         else          else
         {          {
             if ((s_objet_3 = copie_objet(s_etat_processus,              if ((s_objet_3 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 963  instruction_sto_plus(struct_processus *s Line 983  instruction_sto_plus(struct_processus *s
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 1177  instruction_sto_moins(struct_processus * Line 1196  instruction_sto_moins(struct_processus *
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
             liberation(s_etat_processus, s_objet_2);              liberation(s_etat_processus, s_objet_2);
Line 1197  instruction_sto_moins(struct_processus * Line 1216  instruction_sto_moins(struct_processus *
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 1208  instruction_sto_moins(struct_processus * Line 1226  instruction_sto_moins(struct_processus *
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 1277  instruction_sto_moins(struct_processus * Line 1293  instruction_sto_moins(struct_processus *
         else          else
         {          {
             if ((s_objet_3 = copie_objet(s_etat_processus,              if ((s_objet_3 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 1412  instruction_sto_moins(struct_processus * Line 1427  instruction_sto_moins(struct_processus *
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante)
                     .position_variable_courante].objet)) == d_erreur)                      .objet)) == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 1469  instruction_sto_moins(struct_processus * Line 1483  instruction_sto_moins(struct_processus *
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
             liberation(s_etat_processus, s_objet_2);              liberation(s_etat_processus, s_objet_2);
Line 1489  instruction_sto_moins(struct_processus * Line 1503  instruction_sto_moins(struct_processus *
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 1500  instruction_sto_moins(struct_processus * Line 1513  instruction_sto_moins(struct_processus *
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 1569  instruction_sto_moins(struct_processus * Line 1580  instruction_sto_moins(struct_processus *
         else          else
         {          {
             if ((s_objet_3 = copie_objet(s_etat_processus,              if ((s_objet_3 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 1704  instruction_sto_moins(struct_processus * Line 1714  instruction_sto_moins(struct_processus *
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante)
                     .position_variable_courante].objet)) == d_erreur)                      .objet)) == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 1918  instruction_sto_fois(struct_processus *s Line 1927  instruction_sto_fois(struct_processus *s
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
             liberation(s_etat_processus, s_objet_2);              liberation(s_etat_processus, s_objet_2);
Line 1938  instruction_sto_fois(struct_processus *s Line 1947  instruction_sto_fois(struct_processus *s
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 1949  instruction_sto_fois(struct_processus *s Line 1957  instruction_sto_fois(struct_processus *s
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 2018  instruction_sto_fois(struct_processus *s Line 2024  instruction_sto_fois(struct_processus *s
         else          else
         {          {
             if ((s_objet_3 = copie_objet(s_etat_processus,              if ((s_objet_3 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 2153  instruction_sto_fois(struct_processus *s Line 2158  instruction_sto_fois(struct_processus *s
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 2210  instruction_sto_fois(struct_processus *s Line 2214  instruction_sto_fois(struct_processus *s
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
             liberation(s_etat_processus, s_objet_2);              liberation(s_etat_processus, s_objet_2);
Line 2230  instruction_sto_fois(struct_processus *s Line 2234  instruction_sto_fois(struct_processus *s
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 2241  instruction_sto_fois(struct_processus *s Line 2244  instruction_sto_fois(struct_processus *s
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 2310  instruction_sto_fois(struct_processus *s Line 2311  instruction_sto_fois(struct_processus *s
         else          else
         {          {
             if ((s_objet_3 = copie_objet(s_etat_processus,              if ((s_objet_3 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 2445  instruction_sto_fois(struct_processus *s Line 2445  instruction_sto_fois(struct_processus *s
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 2659  instruction_sto_division(struct_processu Line 2658  instruction_sto_division(struct_processu
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
             liberation(s_etat_processus, s_objet_2);              liberation(s_etat_processus, s_objet_2);
Line 2679  instruction_sto_division(struct_processu Line 2678  instruction_sto_division(struct_processu
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 2690  instruction_sto_division(struct_processu Line 2688  instruction_sto_division(struct_processu
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 2759  instruction_sto_division(struct_processu Line 2755  instruction_sto_division(struct_processu
         else          else
         {          {
             if ((s_objet_3 = copie_objet(s_etat_processus,              if ((s_objet_3 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 2894  instruction_sto_division(struct_processu Line 2889  instruction_sto_division(struct_processu
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 2951  instruction_sto_division(struct_processu Line 2945  instruction_sto_division(struct_processu
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
             liberation(s_etat_processus, s_objet_2);              liberation(s_etat_processus, s_objet_2);
Line 2971  instruction_sto_division(struct_processu Line 2965  instruction_sto_division(struct_processu
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 2982  instruction_sto_division(struct_processu Line 2975  instruction_sto_division(struct_processu
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 3051  instruction_sto_division(struct_processu Line 3042  instruction_sto_division(struct_processu
         else          else
         {          {
             if ((s_objet_3 = copie_objet(s_etat_processus,              if ((s_objet_3 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 3186  instruction_sto_division(struct_processu Line 3176  instruction_sto_division(struct_processu
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 3362  instruction_sneg(struct_processus *s_eta Line 3351  instruction_sneg(struct_processus *s_eta
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
   
Line 3381  instruction_sneg(struct_processus *s_eta Line 3370  instruction_sneg(struct_processus *s_eta
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 3392  instruction_sneg(struct_processus *s_eta Line 3380  instruction_sneg(struct_processus *s_eta
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 3459  instruction_sneg(struct_processus *s_eta Line 3445  instruction_sneg(struct_processus *s_eta
         else          else
         {          {
             if ((s_objet_2 = copie_objet(s_etat_processus,              if ((s_objet_2 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 3576  instruction_sneg(struct_processus *s_eta Line 3561  instruction_sneg(struct_processus *s_eta
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 3750  instruction_sinv(struct_processus *s_eta Line 3734  instruction_sinv(struct_processus *s_eta
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
   
Line 3769  instruction_sinv(struct_processus *s_eta Line 3753  instruction_sinv(struct_processus *s_eta
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 3780  instruction_sinv(struct_processus *s_eta Line 3763  instruction_sinv(struct_processus *s_eta
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 3847  instruction_sinv(struct_processus *s_eta Line 3828  instruction_sinv(struct_processus *s_eta
         else          else
         {          {
             if ((s_objet_2 = copie_objet(s_etat_processus,              if ((s_objet_2 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 3964  instruction_sinv(struct_processus *s_eta Line 3944  instruction_sinv(struct_processus *s_eta
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   
Line 4138  instruction_sconj(struct_processus *s_et Line 4117  instruction_sconj(struct_processus *s_et
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante)
                 .position_variable_courante].variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             liberation(s_etat_processus, s_objet_1);              liberation(s_etat_processus, s_objet_1);
   
Line 4157  instruction_sconj(struct_processus *s_et Line 4136  instruction_sconj(struct_processus *s_et
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL)
                 .position_variable_courante].objet == NULL)  
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
                     .s_liste_variables_partagees).mutex)) != 0)                      .s_liste_variables_partagees).mutex)) != 0)
Line 4168  instruction_sconj(struct_processus *s_et Line 4146  instruction_sconj(struct_processus *s_et
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     .position_variable_courante].nom, (*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante)
                     .s_liste_variables[(*s_etat_processus)                      .variable_partagee, (*(*s_etat_processus)
                     .position_variable_courante].variable_partagee,                      .pointeur_variable_courante).origine) == d_faux)
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].origine) == d_faux)  
             {              {
                 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 4235  instruction_sconj(struct_processus *s_et Line 4211  instruction_sconj(struct_processus *s_et
         else          else
         {          {
             if ((s_objet_2 = copie_objet(s_etat_processus,              if ((s_objet_2 = copie_objet(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).objet,
                     [(*s_etat_processus).position_variable_courante].objet,  
                     'P')) == NULL)                      'P')) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 4352  instruction_sconj(struct_processus *s_et Line 4327  instruction_sconj(struct_processus *s_et
         else          else
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
                     (*s_etat_processus).s_liste_variables[(*s_etat_processus)                      (*(*s_etat_processus).pointeur_variable_courante).objet);
                     .position_variable_courante].objet);  
   
             if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     &((*s_etat_processus).s_liste_variables[(*s_etat_processus)                      &((*(*s_etat_processus).pointeur_variable_courante).objet))
                     .position_variable_courante].objet)) == d_erreur)                      == d_erreur)
             {              {
                 liberation(s_etat_processus, s_objet_1);                  liberation(s_etat_processus, s_objet_1);
   

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


CVSweb interface <joel.bertrand@systella.fr>