--- rpl/src/sequenceur.c 2010/04/17 18:57:36 1.11 +++ rpl/src/sequenceur.c 2010/04/20 12:49:18 1.12 @@ -19,7 +19,7 @@ ================================================================================ */ - +#define DEBUG_RETURN #include "rpl.conv.h" @@ -814,32 +814,28 @@ sequenceur(struct_processus *s_etat_proc { (*s_etat_processus).erreur_execution = d_ex_manque_argument; - return(d_erreur); } - - if ((*(*(*s_etat_processus).l_base_pile).donnee).type - == NOM) + else if ((*(*(*s_etat_processus).l_base_pile).donnee) + .type == NOM) { if ((*((struct_nom *) (*(*(*s_etat_processus) .l_base_pile).donnee).objet)).symbole == d_faux) { - if (depilement(s_etat_processus, - &((*s_etat_processus).l_base_pile), - &s_objet_evaluation) == d_erreur) + (*s_etat_processus).erreur_execution = + d_ex_nom_implicite; + + // Si le niveau de récursivité est non nul, on + // arrive ici depuis la fonction + // recherche_type(). On retourne à cette + // dernière en indiquant une erreur. + + if ((*s_etat_processus).niveau_recursivite != 0) { - (*s_etat_processus).erreur_execution = - d_ex_manque_argument; + free((*s_etat_processus) + .instruction_courante); return(d_erreur); } - - liberation(s_etat_processus, - s_objet_evaluation); - free((*s_etat_processus).instruction_courante); - - (*s_etat_processus).erreur_execution = - d_ex_manque_argument; - return(d_erreur); } } } @@ -854,6 +850,7 @@ sequenceur(struct_processus *s_etat_proc { (*s_etat_processus).erreur_execution = d_ex_manque_argument; +//////////////////////////////////////////////////////////////////////////////// return(d_erreur); } @@ -890,19 +887,7 @@ sequenceur(struct_processus *s_etat_proc != 0) && (strcmp((*s_etat_processus) .instruction_courante, ">>") != 0)) { - if ((s_objet = (struct_objet *) malloc( - sizeof(struct_objet))) == NULL) - { - (*s_etat_processus).erreur_systeme = - d_es_allocation_memoire; - return(d_erreur); - } - - initialisation_objet(s_objet); - (*s_objet).type = FCT; - - if (((*s_objet).objet = allocation(s_etat_processus, FCT)) - == NULL) + if ((s_objet = allocation(s_etat_processus, FCT)) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;