--- rpl/src/evaluation.c 2012/12/14 14:19:49 1.64 +++ rpl/src/evaluation.c 2013/03/06 09:00:26 1.73 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.11 - Copyright (C) 1989-2012 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.13 + Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -98,7 +98,6 @@ evaluation(struct_processus *s_etat_proc unsigned long niveau_initial; unsigned long nombre_termes; unsigned long registre_hauteur_pile_operationnelle; - unsigned long registre_niveau_courant; unsigned long registre_position_courante; void (*fonction)(); @@ -187,7 +186,7 @@ evaluation(struct_processus *s_etat_proc .pointeur_variable_courante).nom, (*(*s_etat_processus) .pointeur_variable_courante) - .variable_partagee, 'E') == d_vrai) + .variable_partagee, 'E') != NULL) { presence_variable = d_vrai; presence_variable_partagee = d_vrai; @@ -715,8 +714,6 @@ evaluation(struct_processus *s_etat_proc registre_retour_definition = (*(*s_etat_processus).l_base_pile_systeme) .retour_definition; (*(*s_etat_processus).l_base_pile_systeme).retour_definition = 'N'; - (*(*s_etat_processus).l_base_pile_systeme).pointeur_adresse_retour = - s_objet; l_element_courant = (struct_liste_chainee *) (*s_objet).objet; autorisation_empilement_programme = (*s_etat_processus) @@ -817,6 +814,7 @@ evaluation(struct_processus *s_etat_proc { if ((*s_etat_processus).arret_si_exception == d_faux) { +uprintf("\n"); /* * Reprise sur erreur */ @@ -1252,6 +1250,7 @@ evaluation(struct_processus *s_etat_proc /* * Reprise sur erreur */ +uprintf("\n"); while(l_element_courant != NULL) { @@ -2313,7 +2312,7 @@ evaluation(struct_processus *s_etat_proc .pointeur_variable_courante).nom, (*(*s_etat_processus) .pointeur_variable_courante).variable_partagee, - 'E') == d_vrai) + 'E') != NULL) { // Une variable partagée existe. @@ -3799,6 +3798,7 @@ evaluation(struct_processus *s_etat_proc * Reprise sur erreur */ +uprintf("\n"); if ((message = messages(s_etat_processus)) == NULL) { if (presence_egalite == d_vrai) @@ -4271,6 +4271,7 @@ evaluation(struct_processus *s_etat_proc * Reprise sur erreur */ +uprintf("\n"); while(l_element_courant != NULL) { if ((*(*l_element_courant).donnee).type == FCT) @@ -5049,6 +5050,7 @@ evaluation(struct_processus *s_etat_proc * Reprise sur erreur */ +uprintf("\n"); if ((message = messages(s_etat_processus)) == NULL) { if (presence_egalite == d_vrai) @@ -5521,6 +5523,7 @@ evaluation(struct_processus *s_etat_proc * Reprise sur erreur */ +uprintf("\n"); while(l_element_courant != NULL) { if ((*(*l_element_courant).donnee).type == FCT) @@ -6241,7 +6244,6 @@ evaluation(struct_processus *s_etat_proc registre_mode_execution_programme; (*s_etat_processus).instruction_courante = instruction_courante; - if (presence_egalite == d_vrai) { liberation(s_etat_processus, s_objet_evalue); @@ -6339,7 +6341,7 @@ evaluation(struct_processus *s_etat_proc .pointeur_variable_courante).nom, (*(*s_etat_processus) .pointeur_variable_courante) - .variable_partagee, 'E') == d_vrai) + .variable_partagee, 'E') != NULL) { presence_variable = d_vrai; presence_variable_partagee = d_vrai; @@ -6544,7 +6546,7 @@ evaluation(struct_processus *s_etat_proc } (*s_etat_processus).evaluation_forcee = - registre_evaluation_forcee; + registre_evaluation_forcee; (*s_etat_processus).instruction_courante = instruction_courante; (*s_etat_processus).mode_execution_programme = 'N'; @@ -6679,18 +6681,18 @@ evaluation(struct_processus *s_etat_proc } } - registre_niveau_courant = (*(*s_etat_processus) - .l_base_pile_systeme).niveau_courant; - registre_retour_definition = - (*(*s_etat_processus) - .l_base_pile_systeme).retour_definition; + empilement_pile_systeme(s_etat_processus); (*(*s_etat_processus).l_base_pile_systeme) .retour_definition = 'Y'; (*(*s_etat_processus).l_base_pile_systeme) .niveau_courant = (*s_etat_processus) .niveau_courant; - empilement_pile_systeme(s_etat_processus); + (*(*s_etat_processus).l_base_pile_systeme) + .pointeur_objet_retour = + l_element_courant; + (*(*s_etat_processus).l_base_pile_systeme) + .origine_routine_evaluation = 'Y'; if (evaluation(s_etat_processus, (*(*s_etat_processus) @@ -6699,13 +6701,6 @@ evaluation(struct_processus *s_etat_proc { depilement_pile_systeme(s_etat_processus); - (*(*s_etat_processus).l_base_pile_systeme) - .niveau_courant = - registre_niveau_courant; - (*(*s_etat_processus).l_base_pile_systeme) - .retour_definition = - registre_retour_definition; - if ((*s_etat_processus).profilage == d_vrai) { profilage(s_etat_processus, NULL); @@ -6729,13 +6724,6 @@ evaluation(struct_processus *s_etat_proc } depilement_pile_systeme(s_etat_processus); - - (*(*s_etat_processus).l_base_pile_systeme) - .niveau_courant = - registre_niveau_courant; - (*(*s_etat_processus).l_base_pile_systeme) - .retour_definition = - registre_retour_definition; } else { @@ -6859,7 +6847,7 @@ evaluation(struct_processus *s_etat_proc .pointeur_variable_courante).nom, (*(*s_etat_processus) .pointeur_variable_courante) - .variable_partagee, 'E') == d_vrai) + .variable_partagee, 'E') != NULL) { liberation(s_etat_processus, s_objet_elementaire);