Diff for /rpl/src/instructions_t3.c between versions 1.45 and 1.72

version 1.45, 2013/03/21 11:30:30 version 1.72, 2020/01/10 11:15:49
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.13    RPL/2 (R) version 4.1.32
   Copyright (C) 1989-2013 Dr. BERTRAND Joël    Copyright (C) 1989-2020 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 275  instruction_trnc(struct_processus *s_eta Line 275  instruction_trnc(struct_processus *s_eta
                 cf(s_etat_processus, 56);                  cf(s_etat_processus, 56);
             }              }
   
               (*s_etat_processus).type_en_cours = NON;
             recherche_type(s_etat_processus);              recherche_type(s_etat_processus);
   
             free((*s_etat_processus).instruction_courante);              free((*s_etat_processus).instruction_courante);
Line 342  instruction_table_fleche(struct_processu Line 343  instruction_table_fleche(struct_processu
     struct_objet                    *s_objet;      struct_objet                    *s_objet;
     struct_objet                    *s_objet_resultat;      struct_objet                    *s_objet_resultat;
   
       unsigned char                   *registre_instruction_courante;
       unsigned char                   registre_instruction_valide;
       unsigned char                   registre_test;
   
     integer8                        i;      integer8                        i;
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
Line 416  instruction_table_fleche(struct_processu Line 421  instruction_table_fleche(struct_processu
             return;              return;
         }          }
   
         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),          if ((*((*((struct_tableau *) (*s_objet).objet)).elements[i])).type
                 (*((struct_tableau *) (*s_objet).objet)).elements[i])                  != FCT)
                 == d_erreur)  
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
             return;                      (*((struct_tableau *) (*s_objet).objet)).elements[i])
                       == d_erreur)
               {
                   return;
               }
           }
           else
           {
               registre_test = (*s_etat_processus).test_instruction;
               registre_instruction_courante = (*s_etat_processus)
                       .instruction_courante;
               registre_instruction_valide = (*s_etat_processus)
                       .instruction_valide;
   
               (*s_etat_processus).test_instruction = 'Y';
               (*s_etat_processus).instruction_courante =
                       (*((struct_fonction *) (*((struct_tableau *)
                       (*s_objet).objet)).elements[i])).nom_fonction;
   
               analyse(s_etat_processus, NULL);
   
               (*s_etat_processus).test_instruction = registre_test;
               (*s_etat_processus).instruction_courante =
                       registre_instruction_courante;
   
               if (((*s_etat_processus).instruction_valide == 'Y') &&
                       (*s_etat_processus).constante_symbolique == 'Y')
               {
                   if (evaluation(s_etat_processus, (*((struct_tableau *)
                           (*s_objet).objet)).elements[i], 'E') == d_erreur)
                   {
                       (*s_etat_processus).instruction_valide =
                               registre_instruction_valide;
                       return;
                   }
               }
               else
               {
                   if (empilement(s_etat_processus, &((*s_etat_processus)
                           .l_base_pile), (*((struct_tableau *) (*s_objet).objet))
                           .elements[i]) == d_erreur)
                   {
                       (*s_etat_processus).instruction_valide =
                               registre_instruction_valide;
                       return;
                   }
               }
   
               (*s_etat_processus).instruction_valide =
                       registre_instruction_valide;
         }          }
     }      }
   
Line 602  instruction_tokenize(struct_processus *s Line 655  instruction_tokenize(struct_processus *s
     unsigned char                       *registre_instruction_courante;      unsigned char                       *registre_instruction_courante;
     unsigned char                       *registre_definitions_chainees;      unsigned char                       *registre_definitions_chainees;
     unsigned char                       *tampon;      unsigned char                       *tampon;
       unsigned char                       *tampon2;
   
     integer8                            nombre_caracteres_echappement;      integer8                            nombre_caracteres_echappement;
     integer8                            registre_longueur_definitions_chainees;      integer8                            registre_longueur_definitions_chainees;
Line 652  instruction_tokenize(struct_processus *s Line 706  instruction_tokenize(struct_processus *s
     {      {
         // Conversion des caractères d'échappement          // Conversion des caractères d'échappement
   
         ptr = (unsigned char *) (*s_objet_argument).objet;          if ((tampon2 = malloc((strlen((*s_objet_argument).objet) + 1) *
                   sizeof(unsigned char))) == NULL)
           {
               (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
               return;
           }
   
           strcpy(tampon2, (*s_objet_argument).objet);
           ptr = tampon2;
         ptr2 = ptr;          ptr2 = ptr;
   
         while((*ptr) != d_code_fin_chaine)          while((*ptr) != d_code_fin_chaine)
Line 706  instruction_tokenize(struct_processus *s Line 768  instruction_tokenize(struct_processus *s
         // Remplacement des éventuels retours à la ligne et tabulations par          // Remplacement des éventuels retours à la ligne et tabulations par
         // des espaces.          // des espaces.
   
         ptr = (unsigned char *) (*s_objet_argument).objet;          ptr = tampon2;
   
         while((*ptr) != d_code_fin_chaine)          while((*ptr) != d_code_fin_chaine)
         {          {
Line 733  instruction_tokenize(struct_processus *s Line 795  instruction_tokenize(struct_processus *s
                 .longueur_definitions_chainees;                  .longueur_definitions_chainees;
         registre_position_courante = (*s_etat_processus).position_courante;          registre_position_courante = (*s_etat_processus).position_courante;
   
         (*s_etat_processus).definitions_chainees = (unsigned char *)          (*s_etat_processus).definitions_chainees = tampon2;
                 (*s_objet_argument).objet;  
         (*s_etat_processus).longueur_definitions_chainees =          (*s_etat_processus).longueur_definitions_chainees =
                 (integer8) strlen((*s_etat_processus).definitions_chainees);                  (integer8) strlen((*s_etat_processus).definitions_chainees);
         (*s_etat_processus).position_courante = 0;          (*s_etat_processus).position_courante = 0;
Line 757  instruction_tokenize(struct_processus *s Line 818  instruction_tokenize(struct_processus *s
                 (*s_etat_processus).position_courante =                  (*s_etat_processus).position_courante =
                         registre_position_courante;                          registre_position_courante;
   
                   free(tampon2);
   
                 liberation(s_etat_processus, s_objet_argument);                  liberation(s_etat_processus, s_objet_argument);
                 liberation(s_etat_processus, s_objet_resultat);                  liberation(s_etat_processus, s_objet_resultat);
   
Line 870  instruction_tokenize(struct_processus *s Line 933  instruction_tokenize(struct_processus *s
         (*s_etat_processus).longueur_definitions_chainees =          (*s_etat_processus).longueur_definitions_chainees =
                 registre_longueur_definitions_chainees;                  registre_longueur_definitions_chainees;
         (*s_etat_processus).position_courante = registre_position_courante;          (*s_etat_processus).position_courante = registre_position_courante;
   
           free(tampon2);
     }      }
   
 /*  /*
Line 893  instruction_tokenize(struct_processus *s Line 958  instruction_tokenize(struct_processus *s
     }      }
   
     liberation(s_etat_processus, s_objet_argument);      liberation(s_etat_processus, s_objet_argument);
   
     return;      return;
 }  }
   

Removed from v.1.45  
changed lines
  Added in v.1.72


CVSweb interface <joel.bertrand@systella.fr>