--- rpl/src/instructions_s9.c 2010/05/24 10:58:35 1.11 +++ rpl/src/instructions_s9.c 2010/07/24 18:01:12 1.15 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.16 + RPL/2 (R) version 4.0.18 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -463,7 +463,6 @@ instruction_sort(struct_processus *s_eta indice_j = 0; indice_k = (*((struct_tableau *) (*s_objet_liste).objet)) .nombre_elements - ecartement; - terminaison_boucle_2 = d_faux; do @@ -557,12 +556,12 @@ instruction_sort(struct_processus *s_eta if (condition == d_faux) { - swap((void *) (*((struct_tableau *) - (*s_objet_liste).objet)).elements - [indice_i - 1], (void *) - (*((struct_tableau *) (*s_objet_liste) - .objet)).elements[indice_l - 1], - sizeof(struct_objet)); + swap(&((*((struct_tableau *) + (*s_objet_liste).objet)).elements + [indice_i - 1]), + &((*((struct_tableau *) (*s_objet_liste) + .objet)).elements[indice_l - 1]), + sizeof(struct_objet *)); indice_i -= ecartement; @@ -793,10 +792,18 @@ instruction_save(struct_processus *s_eta i--; } - (*s_etat_processus).position_variable_courante = i; + if (presence_variable == d_vrai) + { + (*s_etat_processus).position_variable_courante = i; + } + else + { + (*s_etat_processus).position_variable_courante = 0; + } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].niveau == 1) + if (((*s_etat_processus).s_liste_variables[(*s_etat_processus) + .position_variable_courante].niveau == 1) && + (presence_variable == d_vrai)) { // On a trouvé une variable globale correspondant au nom et // que l'on modifie.