Diff for /rpl/src/instructions_i2.c between versions 1.24 and 1.38

version 1.24, 2011/06/24 15:59:07 version 1.38, 2012/04/13 07:45:44
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.0.prerelease.3    RPL/2 (R) version 4.1.7
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2012 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 782  instruction_input(struct_processus *s_et Line 782  instruction_input(struct_processus *s_et
 {  {
     struct_objet                *s_objet_resultat;      struct_objet                *s_objet_resultat;
   
       unsigned char               *ptr_e;
       unsigned char               *ptr_l;
     unsigned char               *tampon;      unsigned char               *tampon;
       unsigned char               *tampon2;
   
       unsigned long               i;
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
   
Line 848  instruction_input(struct_processus *s_et Line 853  instruction_input(struct_processus *s_et
     }      }
   
     free((unsigned char *) (*s_objet_resultat).objet);      free((unsigned char *) (*s_objet_resultat).objet);
     (*s_objet_resultat).objet = tampon;  
       ptr_l = tampon;
       i = 0;
   
       while((*ptr_l) != d_code_fin_chaine)
       {
           if ((*ptr_l) == '\"')
           {
               i++;
           }
   
           ptr_l++;
       }
   
       if ((tampon2 = malloc((strlen(tampon) + 1 + i) *
               sizeof(unsigned char))) == NULL)
       {
           (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
           return;
       }
   
       ptr_l = tampon;
       ptr_e = tampon2;
   
       while((*ptr_l) != d_code_fin_chaine)
       {
           if ((*ptr_l) == '\"')
           {
               (*ptr_e) = '\\';
               ptr_e++;
           }
   
           (*ptr_e) = (*ptr_l);
           ptr_e++;
           ptr_l++;
       }
   
       free(tampon);
       (*s_objet_resultat).objet = tampon2;
   
     add_history((unsigned char *) (*s_objet_resultat).objet);      add_history((unsigned char *) (*s_objet_resultat).objet);
     stifle_history(ds_longueur_historique);      stifle_history(ds_longueur_historique);
Line 1040  instruction_int(struct_processus *s_etat Line 1083  instruction_int(struct_processus *s_etat
             printf("(numerical)\n\n");              printf("(numerical)\n\n");
         }          }
   
         // Entier et réel          printf("    3: %s, %s, %s, %s, %s\n", d_INT, d_REL,
         printf("    3: %s, %s, %s\n", d_NOM, d_ALG, d_RPN);                  d_NOM, d_ALG, d_RPN);
         printf("    2: %s\n", d_LST);          printf("    2: %s\n", d_LST);
         printf("    1: %s, %s\n", d_INT, d_REL);          printf("    1: %s, %s\n", d_INT, d_REL);
         printf("->  2: %s, %s\n", d_INT, d_REL);          printf("->  2: %s, %s\n", d_INT, d_REL);
         printf("    1: %s, %s\n\n", d_INT, d_REL);          printf("    1: %s, %s\n\n", d_INT, d_REL);
   
         printf("    2: %s, %s\n", d_ALG, d_NOM);          printf("    2: %s, %s, %s, %s\n", d_INT, d_REL, d_NOM, d_ALG);
         printf("    1: %s\n", d_NOM);          printf("    1: %s\n", d_NOM);
         printf("->  1: %s\n", d_ALG);          printf("->  1: %s, %s, %s, %s\n", d_INT, d_REL, d_NOM, d_ALG);
         return;          return;
     }      }
     else if ((*s_etat_processus).test_instruction == 'Y')      else if ((*s_etat_processus).test_instruction == 'Y')
Line 1070  instruction_int(struct_processus *s_etat Line 1113  instruction_int(struct_processus *s_etat
   
         if (test_cfsf(s_etat_processus, 31) == d_vrai)          if (test_cfsf(s_etat_processus, 31) == d_vrai)
         {          {
             if (empilement_pile_last(s_etat_processus, 3) == d_erreur)              if (empilement_pile_last(s_etat_processus, 2) == d_erreur)
             {              {
                 return;                  return;
             }              }
Line 1094  instruction_int(struct_processus *s_etat Line 1137  instruction_int(struct_processus *s_etat
   
         if (((*s_objet_argument_1).type == NOM) &&          if (((*s_objet_argument_1).type == NOM) &&
                 (((*s_objet_argument_2).type == NOM) ||                  (((*s_objet_argument_2).type == NOM) ||
                 ((*s_objet_argument_2).type == ALG)))                  ((*s_objet_argument_2).type == ALG) ||
                   ((*s_objet_argument_2).type == REL) ||
                   ((*s_objet_argument_2).type == INT)))
         {          {
             if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     s_objet_argument_2) == d_erreur)                      s_objet_argument_2) == d_erreur)
Line 1158  instruction_int(struct_processus *s_etat Line 1203  instruction_int(struct_processus *s_etat
             return;              return;
         }          }
   
           if (((*s_objet_argument_3).type != NOM) &&
                   ((*s_objet_argument_3).type != ALG) &&
                   ((*s_objet_argument_3).type != RPN) &&
                   ((*s_objet_argument_3).type != REL) &&
                   ((*s_objet_argument_3).type != INT))
           {
               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_erreur_type_argument;
               return;
           }
   
         if ((*s_objet_argument_1).type == INT)          if ((*s_objet_argument_1).type == INT)
         {          {
             precision = (*((integer8 *) (*s_objet_argument_1).objet));              precision = (*((integer8 *) (*s_objet_argument_1).objet));

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


CVSweb interface <joel.bertrand@systella.fr>