--- rpl/src/instructions_r2.c 2010/02/10 10:14:24 1.3 +++ rpl/src/instructions_r2.c 2011/06/10 11:35:13 1.21 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.11 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.0.prerelease.0 + Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -534,9 +534,8 @@ instruction_return(struct_processus *s_e return; } - if (((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet == NULL) + if ((*(*s_etat_processus) + .pointeur_variable_courante).objet == NULL) { (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = @@ -545,9 +544,8 @@ instruction_return(struct_processus *s_e } (*(*s_etat_processus).l_base_pile_systeme) - .indice_boucle = ((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet; + .indice_boucle = (*(*s_etat_processus) + .pointeur_variable_courante).objet; if (presence_compteur == d_vrai) { @@ -565,6 +563,11 @@ instruction_return(struct_processus *s_e .indice_boucle = NULL; depilement_pile_systeme(s_etat_processus); + + if ((*s_etat_processus).erreur_systeme != d_es) + { + return; + } } else { @@ -716,10 +719,8 @@ instruction_return(struct_processus *s_e analyse(s_etat_processus, instruction_vers_niveau_inferieur); - fin_boucle = (((*(*s_etat_processus) - .expression_courante).suivant == NULL) || - ((*s_etat_processus).retour_routine_evaluation - == 'Y')) + fin_boucle = ((*(*s_etat_processus) + .expression_courante).suivant == NULL) ? d_vrai : d_faux; if (fin_boucle == d_faux) @@ -765,8 +766,7 @@ instruction_return(struct_processus *s_e return; } - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] + if ((*(*s_etat_processus).pointeur_variable_courante) .objet == NULL) { (*s_etat_processus).erreur_systeme = d_es; @@ -776,9 +776,8 @@ instruction_return(struct_processus *s_e } (*(*s_etat_processus).l_base_pile_systeme) - .indice_boucle = ((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet; + .indice_boucle = (*(*s_etat_processus) + .pointeur_variable_courante).objet; if (presence_compteur == d_vrai) { @@ -937,8 +936,8 @@ instruction_rdm(struct_processus *s_etat liberation(s_etat_processus, s_objet_initial); - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { (*s_etat_processus).erreur_execution = d_ex_variable_verrouillee; @@ -946,8 +945,8 @@ instruction_rdm(struct_processus *s_etat return; } - s_objet_initial = (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet; + s_objet_initial = (*(*s_etat_processus).pointeur_variable_courante) + .objet; if (s_objet_initial == NULL) { @@ -959,12 +958,10 @@ instruction_rdm(struct_processus *s_etat } if (recherche_variable_partagee(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].nom, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] - .variable_partagee, (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].origine) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) @@ -2209,8 +2206,7 @@ instruction_rdm(struct_processus *s_etat } else { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet = + (*(*s_etat_processus).pointeur_variable_courante).objet = s_objet_redimensionne; } }