Diff for /rpl/src/sequenceur.c between versions 1.60 and 1.69

version 1.60, 2012/10/08 12:27:38 version 1.69, 2013/03/21 11:30:31
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.11    RPL/2 (R) version 4.1.13
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2013 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 44  sequenceur(struct_processus *s_etat_proc Line 44  sequenceur(struct_processus *s_etat_proc
     struct_objet                *s_objet_evaluation;      struct_objet                *s_objet_evaluation;
     struct_objet                *s_sous_objet;      struct_objet                *s_sous_objet;
   
       integer8                    niveau;
       integer8                    position_courante;
   
     logical1                    drapeau_appel_definition;      logical1                    drapeau_appel_definition;
     logical1                    drapeau_fin;      logical1                    drapeau_fin;
     logical1                    drapeau_then;      logical1                    drapeau_then;
Line 64  sequenceur(struct_processus *s_etat_proc Line 67  sequenceur(struct_processus *s_etat_proc
     unsigned char               tampon_retour;      unsigned char               tampon_retour;
     unsigned char               *t_ligne;      unsigned char               *t_ligne;
   
     unsigned long               niveau;  
     unsigned long               position_courante;  
   
     Keymap                      ancien_keymap;      Keymap                      ancien_keymap;
     Keymap                      nouveau_keymap;      Keymap                      nouveau_keymap;
   
Line 604  sequenceur(struct_processus *s_etat_proc Line 604  sequenceur(struct_processus *s_etat_proc
                             fflush(stdout);                              fflush(stdout);
                         }                          }
   
                         if (pthread_mutex_lock(&((*(*s_etat_processus)  
                                 .s_liste_variables_partagees).mutex)) != 0)  
                         {  
                             (*s_etat_processus).erreur_systeme =  
                                     d_es_processus;  
                             return(d_erreur);  
                         }  
   
                         if (recherche_variable_partagee(s_etat_processus,                          if (recherche_variable_partagee(s_etat_processus,
                                 (*(*s_etat_processus)                                  (*(*s_etat_processus)
                                 .pointeur_variable_courante).nom,                                  .pointeur_variable_courante).nom,
                                 (*(*s_etat_processus)                                  (*(*s_etat_processus)
                                 .pointeur_variable_courante).variable_partagee,                                  .pointeur_variable_courante).variable_partagee,
                                 'P') == d_vrai)                                  'P') != NULL)
                         {                          {
                             // La variable existe.                              // La variable existe.
   
                             if ((s_objet = copie_objet(s_etat_processus,                              if ((s_objet = copie_objet(s_etat_processus,
                                     (*(*s_etat_processus)                                      (*(*s_etat_processus)
                                     .s_liste_variables_partagees)                                      .pointeur_variable_partagee_courante)
                                     .table[(*(*s_etat_processus)                                      .objet, 'P')) == NULL)
                                     .s_liste_variables_partagees)  
                                     .position_variable].objet, 'P'))  
                                     == NULL)  
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
                                         d_es_allocation_memoire;                                          d_es_allocation_memoire;
Line 635  sequenceur(struct_processus *s_etat_proc Line 624  sequenceur(struct_processus *s_etat_proc
                             }                              }
   
                             if (pthread_mutex_unlock(&((*(*s_etat_processus)                              if (pthread_mutex_unlock(&((*(*s_etat_processus)
                                     .s_liste_variables_partagees).mutex))                                      .pointeur_variable_partagee_courante)
                                     != 0)                                      .mutex)) != 0)
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
                                         d_es_processus;                                          d_es_processus;
Line 655  sequenceur(struct_processus *s_etat_proc Line 644  sequenceur(struct_processus *s_etat_proc
                         else                          else
                         {                          {
                             // La variable n'existe plus.                              // La variable n'existe plus.
   
                             if (pthread_mutex_unlock(&((*(*s_etat_processus)  
                                     .s_liste_variables_partagees).mutex))  
                                     != 0)  
                             {  
                                 (*s_etat_processus).erreur_systeme =  
                                         d_es_processus;  
                                 return(d_erreur);  
                             }  
                         }                          }
                     }                      }
   
Line 741  sequenceur(struct_processus *s_etat_proc Line 721  sequenceur(struct_processus *s_etat_proc
                                     .niveau_courant;                                      .niveau_courant;
   
                             (*s_etat_processus).position_courante =                              (*s_etat_processus).position_courante =
                                     (*((unsigned long *)                                      (*((integer8 *)
                                     ((*(*(*s_etat_processus)                                      ((*(*(*s_etat_processus)
                                     .pointeur_variable_courante)                                      .pointeur_variable_courante)
                                     .objet).objet)));                                      .objet).objet)));
Line 971  sequenceur(struct_processus *s_etat_proc Line 951  sequenceur(struct_processus *s_etat_proc
                 free(instruction_majuscule);                  free(instruction_majuscule);
             }              }
   
             erreur |= (((*s_etat_processus).erreur_execution != d_ex)              erreur = (logical1) (erreur | (((*s_etat_processus)
                     ? d_erreur : d_absence_erreur);                      .erreur_execution != d_ex) ? d_erreur : d_absence_erreur));
         }          }
         else          else
         {          {
Line 1085  sequenceur(struct_processus *s_etat_proc Line 1065  sequenceur(struct_processus *s_etat_proc
             (*s_etat_processus).exception = d_ep;              (*s_etat_processus).exception = d_ep;
             erreur = d_absence_erreur;              erreur = d_absence_erreur;
   
             (*s_etat_processus).position_courante -=              (*s_etat_processus).position_courante -= (integer8)
                     strlen((*s_etat_processus).instruction_courante);                      strlen((*s_etat_processus).instruction_courante);
         }          }
   
Line 1195  sequenceur(struct_processus *s_etat_proc Line 1175  sequenceur(struct_processus *s_etat_proc
                                     .niveau_courant;                                      .niveau_courant;
   
                             (*s_etat_processus).position_courante =                              (*s_etat_processus).position_courante =
                                     (*((unsigned long *)                                      (*((integer8 *)
                                     ((*(*(*s_etat_processus)                                      ((*(*(*s_etat_processus)
                                     .pointeur_variable_courante)                                      .pointeur_variable_courante)
                                     .objet).objet)));                                      .objet).objet)));

Removed from v.1.60  
changed lines
  Added in v.1.69


CVSweb interface <joel.bertrand@systella.fr>