--- rpl/src/instructions_f1.c 2011/04/14 08:46:42 1.20.2.2 +++ rpl/src/instructions_f1.c 2012/10/01 11:05:04 1.42 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.23 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.11 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -428,8 +428,7 @@ instruction_fleche(struct_processus *s_e if (recherche_variable(s_etat_processus, s_variable.nom) == d_vrai) { if ((*s_etat_processus).niveau_courant == - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].niveau) + (*(*s_etat_processus).pointeur_variable_courante).niveau) { liberation(s_etat_processus, s_objet); free(s_variable.nom); @@ -985,8 +984,6 @@ instruction_for(struct_processus *s_etat } } - empilement_pile_systeme(s_etat_processus); - if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), &s_objet_1) == d_erreur) { @@ -1027,6 +1024,13 @@ instruction_for(struct_processus *s_etat 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) + { + return; + } + if ((*s_etat_processus).mode_execution_programme == 'Y') { if (recherche_instruction_suivante(s_etat_processus) == d_erreur) @@ -1044,6 +1048,8 @@ instruction_for(struct_processus *s_etat free((*s_etat_processus).instruction_courante); (*s_etat_processus).instruction_courante = tampon; + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).erreur_execution = d_ex_nom_reserve; return; } @@ -1058,6 +1064,7 @@ instruction_for(struct_processus *s_etat liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); + depilement_pile_systeme(s_etat_processus); return; } @@ -1067,6 +1074,8 @@ instruction_for(struct_processus *s_etat liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).erreur_execution = d_ex_manque_argument; return; } @@ -1078,6 +1087,7 @@ instruction_for(struct_processus *s_etat { if ((*s_etat_processus).expression_courante == NULL) { + depilement_pile_systeme(s_etat_processus); (*s_etat_processus).erreur_execution = d_ex_manque_argument; return; } @@ -1102,6 +1112,8 @@ instruction_for(struct_processus *s_etat liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).erreur_execution = d_ex_erreur_traitement_boucle; return; } @@ -1110,6 +1122,8 @@ instruction_for(struct_processus *s_etat liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).erreur_execution = d_ex_erreur_traitement_boucle; return; }