--- rpl/src/gestion_variables.c 2013/03/24 13:42:44 1.73 +++ rpl/src/gestion_variables.c 2013/04/02 11:56:33 1.76 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 + RPL/2 (R) version 4.1.14 Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -1531,6 +1531,15 @@ retrait_variables_par_niveau(struct_proc break; } + if (((*s_etat_processus).at_exit != NULL) && + ((*s_etat_processus).niveau_courant == 0)) + { + // Il y a une routine ATEXIT enregistrée. On ne détruit pas + // les variables globales qui pourraient y être utilisées. + + break; + } + while((*(*s_etat_processus).l_liste_variables_par_niveau).liste != NULL) { @@ -1697,6 +1706,9 @@ liberation_arbre_variables(struct_proces do { l_element_suivant = (*l_element_courant).suivant; + free((*(*l_element_courant).variable).nom); + liberation(s_etat_processus, (*(*l_element_courant) + .variable).objet); liberation_feuille(s_etat_processus, l_element_courant); l_element_courant = l_element_suivant; } while(l_element_courant != (*arbre).feuille);