Diff for /rpl/src/instructions_c3.c between versions 1.4 and 1.32

version 1.4, 2010/02/10 10:47:46 version 1.32, 2011/11/17 17:20:29
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.11    RPL/2 (R) version 4.1.4
   Copyright (C) 1989-2010 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 20 Line 20
 */  */
   
   
 #include "rpl.conv.h"  #include "rpl-conv.h"
   
   
 /*  /*
Line 608  instruction_chr(struct_processus *s_etat Line 608  instruction_chr(struct_processus *s_etat
             printf("(integer to character conversion)\n\n");              printf("(integer to character conversion)\n\n");
         }          }
   
         printf("    1: 0 <= %s <= 255\n", d_INT);          printf("    1: %s\n", d_INT);
         printf("->  1: %s\n", d_CHN);          printf("->  1: %s\n", d_CHN);
   
         return;          return;
Line 642  instruction_chr(struct_processus *s_etat Line 642  instruction_chr(struct_processus *s_etat
   
     if ((*s_objet_argument).type == INT)      if ((*s_objet_argument).type == INT)
     {      {
         if (((*((integer8 *) (*s_objet_argument).objet)) < 0) ||          if ((*((integer8 *) (*s_objet_argument).objet)) !=
                 ((*((integer8 *) (*s_objet_argument).objet)) > 255))                  (unsigned char) (*((integer8 *) (*s_objet_argument).objet)))
         {          {
             liberation(s_etat_processus, s_objet_argument);              liberation(s_etat_processus, s_objet_argument);
   
Line 651  instruction_chr(struct_processus *s_etat Line 651  instruction_chr(struct_processus *s_etat
             return;              return;
         }          }
   
         if ((s_objet_resultat = allocation(s_etat_processus, CHN)) == NULL)          if (isprint((unsigned char) (*((integer8 *) (*s_objet_argument).objet)))
                   != 0)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              if ((s_objet_resultat = allocation(s_etat_processus, CHN)) == NULL)
             return;              {
         }                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return;
               }
   
         if (((*s_objet_resultat).objet = malloc(2 * sizeof(unsigned char)))              if (((*s_objet_resultat).objet = malloc(2 * sizeof(unsigned char)))
                 == NULL)                      == NULL)
         {              {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return;                  return;
               }
   
               ((unsigned char *) (*s_objet_resultat).objet)[0] = (*((integer8 *)
                       (*s_objet_argument).objet));
               ((unsigned char *) (*s_objet_resultat).objet)[1] =
                       d_code_fin_chaine;
         }          }
           else
           {
               if ((s_objet_resultat = allocation(s_etat_processus, CHN)) == NULL)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return;
               }
   
         ((unsigned char *) (*s_objet_resultat).objet)[0] = (*((integer8 *)              if (((*s_objet_resultat).objet = malloc(5 * sizeof(unsigned char)))
                 (*s_objet_argument).objet));                      == NULL)
         ((unsigned char *) (*s_objet_resultat).objet)[1] = d_code_fin_chaine;              {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return;
               }
   
               sprintf((unsigned char *) (*s_objet_resultat).objet, "\\x%02X",
                       (unsigned char) (*((integer8 *)
                       (*s_objet_argument).objet)));
           }
     }      }
   
 /*  /*

Removed from v.1.4  
changed lines
  Added in v.1.32


CVSweb interface <joel.bertrand@systella.fr>