--- rpl/src/interface_tex.c 2010/01/27 22:22:17 1.2 +++ rpl/src/interface_tex.c 2010/02/08 19:26:32 1.3 @@ -2274,24 +2274,17 @@ impression_tex(struct_processus *s_etat_ return; } - if ((commande = (unsigned char *) malloc(((strlen(ds_tex_commande) - 15) - + (2 * strlen((*s_etat_processus).chemin_fichiers_temporaires)) - + strlen((*s_etat_processus).nom_fichier_impression) - + (2 * strlen(nom_fichier_tex)) - + (3 * strlen(d_exec_path)) - + strlen(nom_fichier_dvi) + strlen(nom_fichier_ps)) - * sizeof(unsigned char))) == NULL) + if (alsprintf(&commande, ds_tex_commande, + d_exec_path, d_exec_path, d_exec_path, + (*s_etat_processus).nom_fichier_impression, + (*s_etat_processus).nom_fichier_impression, nom_fichier_tex, + (*s_etat_processus).chemin_fichiers_temporaires, + nom_fichier_tex, nom_fichier_dvi, nom_fichier_ps) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; } - sprintf(commande, ds_tex_commande, d_exec_path, d_exec_path, d_exec_path, - (*s_etat_processus).nom_fichier_impression, - (*s_etat_processus).nom_fichier_impression, nom_fichier_tex, - (*s_etat_processus).chemin_fichiers_temporaires, - nom_fichier_tex, nom_fichier_dvi, nom_fichier_ps); - if (system(commande) != 0) { (*s_etat_processus).erreur_execution = d_ex_erreur_impression; @@ -2301,15 +2294,12 @@ impression_tex(struct_processus *s_etat_ { free(commande); - if ((commande = (unsigned char *) malloc((strlen(ds_tex_postscript) - + strlen(nom_fichier_ps) - 1) * sizeof(unsigned char))) == NULL) + if (alsprintf(&commande, ds_tex_postscript, nom_fichier_ps) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; } - sprintf(commande, ds_tex_postscript, nom_fichier_ps); - if (system(commande) != 0) { (*s_etat_processus).erreur_execution = d_ex_erreur_impression; @@ -2336,24 +2326,48 @@ impression_tex(struct_processus *s_etat_ if (destruction_fichier(nom_fichier_tex) == d_erreur) { + free(nom_fichier_aux); + free(nom_fichier_log); + free(nom_fichier_dvi); + free(nom_fichier_tex); + free(nom_fichier_ps); + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (destruction_fichier(nom_fichier_aux) == d_erreur) { + free(nom_fichier_aux); + free(nom_fichier_log); + free(nom_fichier_dvi); + free(nom_fichier_tex); + free(nom_fichier_ps); + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (destruction_fichier(nom_fichier_dvi) == d_erreur) { + free(nom_fichier_aux); + free(nom_fichier_log); + free(nom_fichier_dvi); + free(nom_fichier_tex); + free(nom_fichier_ps); + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (destruction_fichier(nom_fichier_log) == d_erreur) { + free(nom_fichier_aux); + free(nom_fichier_log); + free(nom_fichier_dvi); + free(nom_fichier_tex); + free(nom_fichier_ps); + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; }