--- rpl/src/instructions_d5.c 2011/06/21 15:26:31 1.55 +++ rpl/src/instructions_d5.c 2011/08/30 14:19:28 1.63 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.0.prerelease.2 + RPL/2 (R) version 4.1.3 Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -814,8 +814,6 @@ instruction_der(struct_processus *s_etat void instruction_detach(struct_processus *s_etat_processus) { - int status; - logical1 drapeau; logical1 variable_partagee; @@ -2455,8 +2453,6 @@ instruction_detach(struct_processus *s_e while((*s_etat_processus).l_base_pile_processus != NULL) { - status = 0; - l_element_courant = (struct_liste_chainee *) (*s_etat_processus).l_base_pile_processus; @@ -2737,6 +2733,17 @@ instruction_detach(struct_processus *s_e l_element_courant = l_element_suivant; } + l_element_courant = (*s_etat_processus).l_base_pile_undo; + while(l_element_courant != NULL) + { + l_element_suivant = (*l_element_courant).suivant; + + liberation(s_etat_processus, (*l_element_courant).donnee); + free(l_element_courant); + + l_element_courant = l_element_suivant; + } + l_element_courant = (*s_etat_processus).l_base_pile_contextes; while(l_element_courant != NULL) { @@ -2927,6 +2934,7 @@ instruction_detach(struct_processus *s_e destruction_fifos_signaux(s_etat_processus); # endif + liberation_contexte_cas(s_etat_processus); free(s_etat_processus); # ifdef DEBUG_MEMOIRE