--- rpl/src/instructions_e2.c 2020/01/10 11:15:45 1.76 +++ rpl/src/instructions_e2.c 2024/01/09 07:33:51 1.82 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.32 - Copyright (C) 1989-2020 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.35 + Copyright (C) 1989-2024 Dr. BERTRAND Joël This file is part of RPL/2. @@ -1283,7 +1283,7 @@ instruction_exit(struct_processus *s_eta presence_boucle = d_vrai; drapeau_boucle_definie = d_vrai; } - else if (((*l_element_pile_systeme).type_cloture == 'D') || + else if (((*l_element_pile_systeme).type_cloture == 'D') || ((*l_element_pile_systeme).type_cloture == 'W')) { presence_boucle = d_vrai; @@ -1482,14 +1482,20 @@ instruction_exit(struct_processus *s_eta } else { - if ((strcmp(instruction_majuscule, "DO") == 0) || - (strcmp(instruction_majuscule, "WHILE") - == 0)) + empilement_pile_systeme(s_etat_processus); + + if (strcmp(instruction_majuscule, "DO") == 0) { + (*(*s_etat_processus).l_base_pile_systeme) + .type_cloture = 'D'; + niveau++; + } + else if (strcmp(instruction_majuscule, "WHILE") == 0) + { + (*(*s_etat_processus).l_base_pile_systeme) + .type_cloture = 'W'; niveau++; } - - empilement_pile_systeme(s_etat_processus); if ((*s_etat_processus).erreur_systeme != d_es) { @@ -1752,13 +1758,20 @@ instruction_exit(struct_processus *s_eta } else { - if ((fonction == instruction_do) || - (fonction == instruction_while)) + empilement_pile_systeme(s_etat_processus); + + if (fonction == instruction_while) { + (*(*s_etat_processus).l_base_pile_systeme) + .type_cloture = 'W'; + niveau++; + } + else if (fonction == instruction_do) + { + (*(*s_etat_processus).l_base_pile_systeme) + .type_cloture = 'D'; niveau++; } - - empilement_pile_systeme(s_etat_processus); if ((*s_etat_processus).erreur_systeme != d_es) {