--- rpl/src/formateur_fichiers.c 2010/01/26 15:22:44 1.1 +++ rpl/src/formateur_fichiers.c 2010/08/26 19:07:35 1.16 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.9 + RPL/2 (R) version 4.0.19 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -1176,16 +1176,37 @@ formateur_fichier(struct_processus *s_et return(NULL); } - chaine = (unsigned char *) malloc((strlen((unsigned char *) - ((*s_objet).objet)) + 1) * sizeof(unsigned char)); - - if (chaine == NULL) + if ((longueur_champ == -1) || (strlen((unsigned char *) + (*s_objet).objet) < longueur_champ)) { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - return(NULL); + chaine = (unsigned char *) malloc((strlen((unsigned char *) + ((*s_objet).objet)) + 1) * sizeof(unsigned char)); + + if (chaine == NULL) + { + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, (unsigned char *) ((*s_objet).objet)); } + else + { + chaine = (unsigned char *) malloc((longueur_champ + 1) + * sizeof(unsigned char)); - strcpy(chaine, (unsigned char *) ((*s_objet).objet)); + if (chaine == NULL) + { + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; + return(NULL); + } + + strncpy(chaine, (unsigned char *) ((*s_objet).objet), + longueur_champ); + chaine[longueur_champ] = d_code_fin_chaine; + } } else if ((*s_objet).type == CPL) { @@ -1565,6 +1586,7 @@ formateur_fichier(struct_processus *s_et longueur, longueur_champ, format_sortie, type, longueur_effective, recursivite)) == NULL) { + free(chaine); return(NULL); } @@ -5633,14 +5655,7 @@ formateur_fichier_nombre(struct_processu strcat(construction_chaine, tampon); free(tampon); - if (test_cfsf(s_etat_processus, 48) == d_faux) - { - strcat(construction_chaine, ","); - } - else - { - strcat(construction_chaine, "."); - } + strcat(construction_chaine, ","); tampon = formateur_fichier_reel(s_etat_processus, (void *) &((*((struct_complexe16 *)