--- rpl/src/instructions_f1.c 2013/12/03 09:36:13 1.60 +++ rpl/src/instructions_f1.c 2015/01/05 13:12:35 1.66 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.17 - Copyright (C) 1989-2013 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.19 + Copyright (C) 1989-2015 Dr. BERTRAND Joël This file is part of RPL/2. @@ -189,6 +189,7 @@ instruction_fleche(struct_processus *s_e if ((*s_etat_processus).instruction_valide == 'N') { + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); if ((*s_etat_processus).erreur_execution != d_ex) @@ -1008,8 +1009,7 @@ instruction_for(struct_processus *s_etat return; } - if (((*s_objet_2).type != INT) && - ((*s_objet_2).type != REL)) + if (((*s_objet_2).type != INT) && ((*s_objet_2).type != REL)) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -1018,11 +1018,6 @@ instruction_for(struct_processus *s_etat return; } - tampon = (*s_etat_processus).instruction_courante; - test_instruction = (*s_etat_processus).test_instruction; - instruction_valide = (*s_etat_processus).instruction_valide; - (*s_etat_processus).test_instruction = 'Y'; - empilement_pile_systeme(s_etat_processus); if ((*s_etat_processus).erreur_systeme != d_es) @@ -1032,6 +1027,11 @@ instruction_for(struct_processus *s_etat if ((*s_etat_processus).mode_execution_programme == 'Y') { + tampon = (*s_etat_processus).instruction_courante; + test_instruction = (*s_etat_processus).test_instruction; + instruction_valide = (*s_etat_processus).instruction_valide; + (*s_etat_processus).test_instruction = 'Y'; + if (recherche_instruction_suivante(s_etat_processus) == d_erreur) { return; @@ -1046,6 +1046,8 @@ instruction_for(struct_processus *s_etat free((*s_etat_processus).instruction_courante); (*s_etat_processus).instruction_courante = tampon; + (*s_etat_processus).instruction_valide = instruction_valide; + (*s_etat_processus).test_instruction = test_instruction; depilement_pile_systeme(s_etat_processus); @@ -1053,10 +1055,13 @@ instruction_for(struct_processus *s_etat return; } + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); free((*s_etat_processus).instruction_courante); (*s_etat_processus).instruction_courante = tampon; + (*s_etat_processus).instruction_valide = instruction_valide; + (*s_etat_processus).test_instruction = test_instruction; if ((*s_etat_processus).erreur_execution != d_ex) { @@ -1148,9 +1153,6 @@ instruction_for(struct_processus *s_etat liberation(s_etat_processus, s_objet_3); - (*s_etat_processus).test_instruction = test_instruction; - (*s_etat_processus).instruction_valide = instruction_valide; - (*(*s_etat_processus).l_base_pile_systeme).limite_indice_boucle = s_objet_1; if ((*s_etat_processus).mode_execution_programme == 'Y')