--- rpl/src/formateur_fichiers.c 2013/03/22 12:04:59 1.64 +++ rpl/src/formateur_fichiers.c 2013/04/18 15:44:39 1.70 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 + RPL/2 (R) version 4.1.14 Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -19,6 +19,7 @@ ================================================================================ */ + #define DEBUG_ERREURS #include "rpl-conv.h" @@ -1000,7 +1001,7 @@ formateur_fichier(struct_processus *s_et if (format_sortie == 'N') { - sprintf(tampon, "%llX", (*((logical8 *) + sprintf(tampon, "%llX", (unsigned long long) (*((logical8 *) ((*s_objet).objet)))); strcpy(base, "h"); } @@ -1010,8 +1011,8 @@ formateur_fichier(struct_processus *s_et { case 2: { - sprintf(tampon, "%llX", (*((logical8 *) - ((*s_objet).objet)))); + sprintf(tampon, "%llX", (unsigned long long) + (*((logical8 *) ((*s_objet).objet)))); chaine = (unsigned char *) malloc((strlen(tampon) + 1) * sizeof(unsigned char)); @@ -1120,7 +1121,7 @@ formateur_fichier(struct_processus *s_et case 8: { - sprintf(tampon, "%llo", (*((logical8 *) + sprintf(tampon, "%llo", (*((unsigned long long *) ((*s_objet).objet)))); strcpy(base, "o"); break; @@ -1128,7 +1129,7 @@ formateur_fichier(struct_processus *s_et case 10: { - sprintf(tampon, "%llu", (*((logical8 *) + sprintf(tampon, "%llu", (*((unsigned long long *) ((*s_objet).objet)))); strcpy(base, "d"); break; @@ -1136,8 +1137,8 @@ formateur_fichier(struct_processus *s_et case 16: { - sprintf(tampon, "%llX", (*((logical8 *) - ((*s_objet).objet)))); + sprintf(tampon, "%llX", (unsigned long long) + (*((logical8 *) ((*s_objet).objet)))); strcpy(base, "h"); break; } @@ -4078,11 +4079,15 @@ formateur_fichier(struct_processus *s_et memcpy(&(chaine[longueur_totale]), tampon, 1); longueur_totale += 1; } - else if (longueur_totale < (((integer8) 1) << 16)) + else { longueur_totale++; - for(i = 0; i < 7; i++) + // i = { 0 (16 bits) 2 (32 bits) 6 (64 bits) } + + i = 0; + + for(;;) { if ((longueur_totale < (((integer8) 1) << (8 * (i + 2)))) || (i == 6)) @@ -4106,9 +4111,29 @@ formateur_fichier(struct_processus *s_et | ((i + 1) << 1)); break; } + + switch(i) + { + case 0 : + { + i = 2; + break; + } + + case 2 : + { + i = 6; + break; + } + } } - if ((chaine = realloc(chaine, (((size_t) longueur_totale) + 3) + // i = 0 => +3 (16 bits) + // i = 2 => +5 (32 bits) + // i = 6 => +9 (64 bits) + + if ((chaine = realloc(chaine, (((size_t) longueur_totale) + + ((i == 0) ? 3 : ((i == 2) ? 5 : 9))) * sizeof(unsigned char))) == NULL) { (*s_etat_processus).erreur_systeme = @@ -4119,9 +4144,6 @@ formateur_fichier(struct_processus *s_et memcpy(&(chaine[longueur_totale]), tampon, 3); longueur_totale += 3; } - else if (longueur_totale < (((integer8) 1) << 32)) - { - } __zone(); (*longueur_effective) = longueur_totale; @@ -5275,25 +5297,23 @@ lecture_fichier_non_formate(struct_proce switch(deplacement) { case 1: - i1 |= (integer1) (i1 << - (8 * ((((signed) deplacement) - 1) - - i))); + i1 = (integer1) octets[0]; break; case 2: - i2 |= (integer2) (i2 << + i2 |= (integer2) (((integer8) octets[i]) << (8 * ((((signed) deplacement) - 1) - i))); break; case 4: - i4 |= (integer4) (i4 << + i4 |= (integer4) (((integer8) octets[i]) << (8 * ((((signed) deplacement) - 1) - i))); break; case 8: - i8 |= (integer8) (i8 << + i8 |= (integer8) (((integer8) octets[i]) << (8 * ((((signed) deplacement) - 1) - i))); break;