--- rpl/src/rpl.c 2011/06/27 09:05:01 1.72 +++ rpl/src/rpl.c 2011/08/30 14:19:28 1.78 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.0 + RPL/2 (R) version 4.1.3 Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -46,7 +46,6 @@ rplinit(int argc, char *argv[], unsigned int erreur_historique; int option_P; - int status; logical1 core; logical1 debug; @@ -183,6 +182,8 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).langue = 'E'; } + initialisation_contexte_cas(s_etat_processus); + (*s_etat_processus).exception = d_ep; (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex; @@ -1857,6 +1858,7 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).l_base_pile = NULL; (*s_etat_processus).l_base_pile_last = NULL; + (*s_etat_processus).l_base_pile_undo = NULL; (*s_etat_processus).s_arbre_variables = NULL; (*s_etat_processus).l_liste_variables_par_niveau = NULL; @@ -2991,8 +2993,6 @@ rplinit(int argc, char *argv[], unsigned while((*s_etat_processus).l_base_pile_processus != NULL) { - status = 0; - l_element_courant = (void *) (*s_etat_processus).l_base_pile_processus; @@ -3396,6 +3396,21 @@ rplinit(int argc, char *argv[], unsigned } l_element_courant = (void *) (*s_etat_processus) + .l_base_pile_undo; + while(l_element_courant != NULL) + { + l_element_suivant = (*((struct_liste_chainee *) + l_element_courant)).suivant; + + liberation(s_etat_processus, + (*((struct_liste_chainee *) + l_element_courant)).donnee); + free((struct_liste_chainee *) l_element_courant); + + l_element_courant = l_element_suivant; + } + + l_element_courant = (void *) (*s_etat_processus) .l_base_pile_systeme; while(l_element_courant != NULL) { @@ -3619,6 +3634,8 @@ rplinit(int argc, char *argv[], unsigned # undef return # endif + liberation_contexte_cas(s_etat_processus); + free((*s_etat_processus).chemin_fichiers_temporaires); free(s_etat_processus);