Diff for /rpl/src/instructions_f2.c between versions 1.1.1.1 and 1.24

version 1.1.1.1, 2010/01/26 15:22:44 version 1.24, 2011/06/22 13:27:00
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.9    RPL/2 (R) version 4.1.0.prerelease.3
   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 729  instruction_fleche_str(struct_processus Line 729  instruction_fleche_str(struct_processus
     struct_objet                    *s_objet_argument;      struct_objet                    *s_objet_argument;
     struct_objet                    *s_objet_resultat;      struct_objet                    *s_objet_resultat;
   
       unsigned char                   *ligne;
       unsigned char                   *ptr_e;
       unsigned char                   *ptr_l;
   
       unsigned long                   caracteres_echappement;
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
   
     if ((*s_etat_processus).affichage_arguments == 'Y')      if ((*s_etat_processus).affichage_arguments == 'Y')
Line 781  instruction_fleche_str(struct_processus Line 787  instruction_fleche_str(struct_processus
         return;          return;
     }      }
   
     (*s_objet_resultat).objet = (void *) formateur(s_etat_processus, 0,      ligne = formateur(s_etat_processus, 0, s_objet_argument);
             s_objet_argument);      caracteres_echappement = 0;
   
       // Reconstitution des caractères d'échappement
   
     if ((*s_objet_resultat).objet == NULL)      ptr_l = ligne;
   
       while((*ptr_l) != d_code_fin_chaine)
       {
           switch(*ptr_l)
           {
               case '\"':
               case '\b':
               case '\n':
               case '\t':
               case '\\':
               {
                   caracteres_echappement++;
                   break;
               }
           }
   
           ptr_l++;
       }
   
       if (((*s_objet_resultat).objet = malloc((strlen(ligne) + 1 +
               caracteres_echappement) * sizeof(unsigned char))) == NULL)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
         return;          return;
     }      }
   
       ptr_l = ligne;
       ptr_e = (*s_objet_resultat).objet;
   
       while((*ptr_l) != d_code_fin_chaine)
       {
           switch(*ptr_l)
           {
               case '\\':
               {
                   (*ptr_e) = '\\';
                   (*(++ptr_e)) = '\\';
                   break;
               }
   
               case '\"':
               {
                   (*ptr_e) = '\\';
                   (*(++ptr_e)) = '\"';
                   break;
               }
   
               case '\b':
               {
                   (*ptr_e) = '\\';
                   (*(++ptr_e)) = 'b';
                   break;
               }
   
               case '\n':
               {
                   (*ptr_e) = '\\';
                   (*(++ptr_e)) = 'n';
                   break;
               }
   
               case '\t':
               {
                   (*ptr_e) = '\\';
                   (*(++ptr_e)) = 't';
                   break;
               }
   
               default:
               {
                   (*ptr_e) = (*ptr_l);
                   break;
               }
           }
   
           ptr_l++;
           ptr_e++;
       }
   
       (*ptr_e) = d_code_fin_chaine;
       free(ligne);
   
     liberation(s_etat_processus, s_objet_argument);      liberation(s_etat_processus, s_objet_argument);
   
     if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),      if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),

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


CVSweb interface <joel.bertrand@systella.fr>