--- rpl/src/evaluation.c 2010/01/29 16:49:23 1.3 +++ rpl/src/evaluation.c 2010/02/05 19:02:56 1.4 @@ -82,6 +82,7 @@ evaluation(struct_processus *s_etat_proc unsigned char *instruction_courante; unsigned char *message; unsigned char registre_evaluation_expression_compilee; + unsigned char registre_evaluation_forcee; unsigned char registre_instruction_valide; unsigned char registre_mode_execution_programme; unsigned char registre_retour_definition; @@ -327,8 +328,18 @@ evaluation(struct_processus *s_etat_proc } } + registre_evaluation_forcee = + (*s_etat_processus).evaluation_forcee; + + if (type_evaluation == 'N') + { + (*s_etat_processus).evaluation_forcee = 'Y'; + } + if (sequenceur(s_etat_processus) == d_erreur) { + (*s_etat_processus).evaluation_forcee = + registre_evaluation_forcee; (*s_etat_processus).mode_execution_programme = registre_mode_execution_programme; (*s_etat_processus).instruction_courante = @@ -336,6 +347,8 @@ evaluation(struct_processus *s_etat_proc return(d_erreur); } + (*s_etat_processus).evaluation_forcee = + registre_evaluation_forcee; (*s_etat_processus).instruction_courante = instruction_courante; (*s_etat_processus).mode_execution_programme = 'N'; @@ -2846,8 +2859,19 @@ evaluation(struct_processus *s_etat_proc } } + registre_evaluation_forcee = + (*s_etat_processus).evaluation_forcee; + + if (type_evaluation == 'N') + { + (*s_etat_processus).evaluation_forcee = 'Y'; + } + if (sequenceur(s_etat_processus) == d_erreur) { + (*s_etat_processus).evaluation_forcee = + registre_evaluation_forcee; + if (presence_variable_partagee == d_vrai) { (*s_etat_processus).s_liste_variables @@ -2876,6 +2900,8 @@ evaluation(struct_processus *s_etat_proc return(d_erreur); } + (*s_etat_processus).evaluation_forcee = + registre_evaluation_forcee; (*s_etat_processus).instruction_courante = instruction_courante; (*s_etat_processus).mode_execution_programme = 'N'; @@ -4532,8 +4558,19 @@ evaluation(struct_processus *s_etat_proc } } + registre_evaluation_forcee = + (*s_etat_processus).evaluation_forcee; + + if (type_evaluation == 'N') + { + (*s_etat_processus).evaluation_forcee = 'Y'; + } + if (sequenceur(s_etat_processus) == d_erreur) { + (*s_etat_processus).evaluation_forcee = + registre_evaluation_forcee; + if (presence_egalite == d_vrai) { liberation(s_etat_processus, s_objet_evalue); @@ -4546,6 +4583,8 @@ evaluation(struct_processus *s_etat_proc return(d_erreur); } + (*s_etat_processus).evaluation_forcee = + registre_evaluation_forcee; (*s_etat_processus).instruction_courante = instruction_courante; (*s_etat_processus).mode_execution_programme = 'N';