--- rpl/src/gestion_threads.c 2011/04/11 13:02:16 1.33.2.1 +++ rpl/src/gestion_threads.c 2011/09/01 12:14:56 1.48 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.22 + RPL/2 (R) version 4.1.3 Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -882,21 +882,8 @@ lancement_thread(void *argument) (*s_etat_processus).instruction_derniere_erreur = NULL; } - for(i = 0; i < (*s_etat_processus).nombre_variables; i++) - { - // Les définitions ne sont pas libérées parce qu'elles sont partagées - // avec le thread père. - - if ((*s_etat_processus).s_liste_variables[i].niveau != 0) - { - liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[i].objet); - } - - free((*s_etat_processus).s_liste_variables[i].nom); - } - - free((*s_etat_processus).s_liste_variables); + liberation_arbre_variables(s_etat_processus, + (*s_etat_processus).s_arbre_variables, d_faux); for(i = 0; i < (*s_etat_processus).nombre_variables_statiques; i++) { @@ -1083,6 +1070,7 @@ lancement_thread(void *argument) sem_destroy(&((*s_etat_processus).semaphore_fork)); + liberation_contexte_cas(s_etat_processus); free((*s_etat_processus).localisation); free(s_etat_processus);