version 1.62, 2013/02/23 15:02:20
|
version 1.68, 2013/03/15 12:43:19
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.12 |
RPL/2 (R) version 4.1.13 |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
Copyright (C) 1989-2013 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 135 reencodage(struct_processus *s_etat_proc
|
Line 135 reencodage(struct_processus *s_etat_proc
|
&longueur_entree, (char **) &pointeur, &longueur_sortie)) |
&longueur_entree, (char **) &pointeur, &longueur_sortie)) |
== (size_t) -1) |
== (size_t) -1) |
{ |
{ |
// On autorise les erreurs EINVAL et EILSEQ |
// On autorise les erreurs EINVAL si le caractère suivant est non |
if (errno == EILSEQ) |
// nul : la séquence d'entrée est continue sur le bloc suivant. |
|
|
|
if (errno == EINVAL) |
|
{ |
|
if ((*(buffer_entree + 1)) == d_code_fin_chaine) |
|
{ |
|
free(buffer_sortie); |
|
free(chaine_sortie); |
|
|
|
// On affiche une erreur ici car la fonction d'affichage |
|
// de l'erreur utilise la macro printf() donc une |
|
// opération de translitération qui échouera elle aussi. |
|
// Le positionnement de l'erreur permet de sortir du |
|
// programme. |
|
|
|
if ((*s_etat_processus).langue == 'F') |
|
{ |
|
fprintf(stderr, "+++Erreur : Erreur de transcodage\n"); |
|
} |
|
else |
|
{ |
|
fprintf(stderr, "+++Error : Transcodage error\n"); |
|
} |
|
|
|
(*s_etat_processus).erreur_execution = |
|
d_ex_erreur_transcodage; |
|
return(NULL); |
|
} |
|
} |
|
|
|
// Si la séquence d'entrée est invalide, on reçoit une erreur |
|
// EILSEQ. |
|
else if (errno == EILSEQ) |
{ |
{ |
free(buffer_sortie); |
free(buffer_sortie); |
free(chaine_sortie); |
free(chaine_sortie); |