--- rpl/src/sequenceur.c 2010/04/20 12:49:18 1.12 +++ rpl/src/sequenceur.c 2011/05/09 13:52:24 1.29.2.3 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.14 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.0.24 + Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -19,8 +19,8 @@ ================================================================================ */ -#define DEBUG_RETURN -#include "rpl.conv.h" + +#include "rpl-conv.h" /* @@ -199,6 +199,7 @@ sequenceur(struct_processus *s_etat_proc (*s_etat_processus).localisation, d_locale)) == NULL) { + free((*s_etat_processus).instruction_courante); return(d_erreur); } @@ -305,6 +306,7 @@ sequenceur(struct_processus *s_etat_proc if ((message = messages(s_etat_processus)) == NULL) { + free((*s_etat_processus).instruction_courante); return(d_erreur); } @@ -364,12 +366,15 @@ sequenceur(struct_processus *s_etat_proc if ((message = messages(s_etat_processus)) == NULL) { + free((*s_etat_processus) + .instruction_courante); return(d_erreur); } printf("%s [%d]\n", message, (int) getpid()); - free(message); + free(message); + free((*s_etat_processus).instruction_courante); return(d_erreur); } else if ((*s_etat_processus) @@ -387,6 +392,8 @@ sequenceur(struct_processus *s_etat_proc if ((message = messages(s_etat_processus)) == NULL) { + free((*s_etat_processus) + .instruction_courante); return(d_erreur); } @@ -452,6 +459,7 @@ sequenceur(struct_processus *s_etat_proc if ((message = messages(s_etat_processus)) == NULL) { + free((*s_etat_processus).instruction_courante); free(ligne); return(d_erreur); } @@ -848,21 +856,34 @@ sequenceur(struct_processus *s_etat_proc &((*s_etat_processus).l_base_pile), &s_objet_evaluation) == d_erreur) { + free((*s_etat_processus).instruction_courante); (*s_etat_processus).erreur_execution = d_ex_manque_argument; -//////////////////////////////////////////////////////////////////////////////// return(d_erreur); } if (evaluation(s_etat_processus, s_objet_evaluation, 'N') == d_erreur) { + free((*s_etat_processus).instruction_courante); liberation(s_etat_processus, s_objet_evaluation); return(d_erreur); } liberation(s_etat_processus, s_objet_evaluation); } + + // Le séquenceur est appelé depuis la routine de + // recherche de type + + else if ((*s_etat_processus).recherche_type == 'Y') + { + if ((*s_etat_processus).erreur_execution != d_ex) + { + free((*s_etat_processus).instruction_courante); + return(d_erreur); + } + } } } else if (((*s_etat_processus).test_instruction == 'Y') && @@ -970,6 +991,7 @@ sequenceur(struct_processus *s_etat_proc fflush(stdout); + free((*s_etat_processus).instruction_courante); return(d_erreur); } @@ -1051,6 +1073,7 @@ sequenceur(struct_processus *s_etat_proc if ((message = messages(s_etat_processus)) == NULL) { + free((*s_etat_processus).instruction_courante); return(d_erreur); } @@ -1137,6 +1160,7 @@ sequenceur(struct_processus *s_etat_proc if (erreur == d_erreur) { + free((*s_etat_processus).instruction_courante); return(d_erreur); } @@ -1158,6 +1182,7 @@ sequenceur(struct_processus *s_etat_proc if ((*s_etat_processus).erreur_systeme != d_es) { + free((*s_etat_processus).instruction_courante); return(d_erreur); } @@ -1191,6 +1216,7 @@ sequenceur(struct_processus *s_etat_proc if (instruction_majuscule == NULL) { + free((*s_etat_processus).instruction_courante); return(d_erreur); }