Diff for /rpl/src/instructions_f2.c between versions 1.3 and 1.4

version 1.3, 2010/02/10 10:14:22 version 1.4, 2010/02/25 09:43:58
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
   
       ptr_l = ligne;
   
       while((*ptr_l) != d_code_fin_chaine)
       {
           switch(*ptr_l)
           {
               case '\"':
               case '\b':
               case '\n':
               case '\t':
               {
                   caracteres_echappement++;
                   break;
               }
           }
   
           ptr_l++;
       }
   
     if ((*s_objet_resultat).objet == NULL)      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 '\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.3  
changed lines
  Added in v.1.4


CVSweb interface <joel.bertrand@systella.fr>