Diff for /rpl/src/formateur_flux.c between versions 1.24 and 1.25

version 1.24, 2012/06/12 11:44:34 version 1.25, 2012/06/21 16:07:25
Line 256  formateur_flux(struct_processus *s_etat_ Line 256  formateur_flux(struct_processus *s_etat_
   
 unsigned char *  unsigned char *
 analyse_flux(struct_processus *s_etat_processus, unsigned char *donnees,  analyse_flux(struct_processus *s_etat_processus, unsigned char *donnees,
         long *longueur)          long longueur)
 {  {
       long                    longueur_courante;
     long                    offset;      long                    offset;
   
     unsigned char           *chaine;      unsigned char           *chaine;
Line 265  analyse_flux(struct_processus *s_etat_pr Line 266  analyse_flux(struct_processus *s_etat_pr
     unsigned char           *ptr_ecriture;      unsigned char           *ptr_ecriture;
     unsigned char           *ptr_lecture;      unsigned char           *ptr_lecture;
   
     if ((chaine = malloc(((*longueur) = (strlen(donnees)) + 1)      if ((chaine = malloc((longueur_courante = longueur + 1) *
             * sizeof(unsigned char))) == NULL)              sizeof(unsigned char))) == NULL)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
         return(NULL);          return(NULL);
Line 275  analyse_flux(struct_processus *s_etat_pr Line 276  analyse_flux(struct_processus *s_etat_pr
     ptr_lecture = donnees;      ptr_lecture = donnees;
     ptr_ecriture = chaine;      ptr_ecriture = chaine;
   
     while((*ptr_lecture) != d_code_fin_chaine)      while(longueur > 0)
     {      {
         (*longueur)++;  
   
         // Début de la séquence d'échappement          // Début de la séquence d'échappement
   
         switch((*ptr_lecture))          switch((*ptr_lecture))
Line 290  analyse_flux(struct_processus *s_etat_pr Line 289  analyse_flux(struct_processus *s_etat_pr
             {              {
                 offset = ptr_ecriture - chaine;                  offset = ptr_ecriture - chaine;
   
                 if ((chaine = realloc(chaine, ((*longueur) = (*longueur) + 1)                  if ((chaine = realloc(chaine, (++longueur_courante)
                         * sizeof(unsigned char))) == NULL)                          * sizeof(unsigned char))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 300  analyse_flux(struct_processus *s_etat_pr Line 299  analyse_flux(struct_processus *s_etat_pr
   
                 ptr_ecriture = chaine + offset;                  ptr_ecriture = chaine + offset;
                 *ptr_ecriture++ = '\\';                  *ptr_ecriture++ = '\\';
                 *ptr_ecriture++ = *ptr_lecture++;  
                 (*longueur)++;                  switch((*ptr_lecture++))
                   {
                       case '"':
                       {
                           *ptr_ecriture++ = '"';
                           break;
                       }
   
                       case '\b':
                       {
                           *ptr_ecriture++ = 'b';
                           break;
                       }
   
                       case '\n':
                       {
                           *ptr_ecriture++ = 'n';
                           break;
                       }
   
                       case '\t':
                       {
                           *ptr_ecriture++ = 't';
                           break;
                       }
                   }
   
                 break;                  break;
             }              }
   
Line 321  analyse_flux(struct_processus *s_etat_pr Line 346  analyse_flux(struct_processus *s_etat_pr
                 {                  {
                     offset = ptr_ecriture - chaine;                      offset = ptr_ecriture - chaine;
   
                     if ((chaine = realloc(chaine, ((*longueur) = (*longueur)                      if ((chaine = realloc(chaine, (longueur_courante =
                             + 3) * sizeof(unsigned char))) == NULL)                              longueur_courante + 3) * sizeof(unsigned char)))
                               == NULL)
                     {                      {
                         (*s_etat_processus).erreur_systeme =                          (*s_etat_processus).erreur_systeme =
                                 d_es_allocation_memoire;                                  d_es_allocation_memoire;
Line 337  analyse_flux(struct_processus *s_etat_pr Line 363  analyse_flux(struct_processus *s_etat_pr
   
                     *ptr_ecriture++ = hexadecimal[0];                      *ptr_ecriture++ = hexadecimal[0];
                     *ptr_ecriture++ = hexadecimal[1];                      *ptr_ecriture++ = hexadecimal[1];
                     (*longueur) += 3;  
                 }                  }
   
                 break;                  break;
             }              }
         }          }
   
           longueur--;
     }      }
   
     (*ptr_ecriture) = d_code_fin_chaine;      (*ptr_ecriture) = d_code_fin_chaine;

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


CVSweb interface <joel.bertrand@systella.fr>