--- rpl/src/rpl.c 2011/08/30 14:19:28 1.78 +++ rpl/src/rpl.c 2011/09/03 10:31:50 1.80 @@ -187,6 +187,7 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).exception = d_ep; (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex; + (*s_etat_processus).compteur_violation_d_acces = 0; (*s_etat_processus).rpl_home = rpl_home; @@ -1858,7 +1859,6 @@ 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; @@ -2766,6 +2766,20 @@ rplinit(int argc, char *argv[], unsigned if (setjmp(contexte_initial) == 0) { erreur = sequenceur(s_etat_processus); + + if (erreur == d_absence_erreur) + { + if (((*s_etat_processus).var_volatile_alarme + == 0) && ((*s_etat_processus) + .arret_depuis_abort == 0) && + ((*s_etat_processus).at_exit + != NULL)) + { + erreur = evaluation(s_etat_processus, + (*s_etat_processus).at_exit, + 'E'); + } + } } } else @@ -2773,18 +2787,20 @@ rplinit(int argc, char *argv[], unsigned if (setjmp(contexte_initial) == 0) { erreur = sequenceur_optimise(s_etat_processus); - } - } - if (erreur == d_absence_erreur) - { - if (((*s_etat_processus).var_volatile_alarme == 0) - && ((*s_etat_processus).arret_depuis_abort - == 0) && ((*s_etat_processus).at_exit - != NULL)) - { - erreur = evaluation(s_etat_processus, - (*s_etat_processus).at_exit, 'E'); + if (erreur == d_absence_erreur) + { + if (((*s_etat_processus).var_volatile_alarme + == 0) && ((*s_etat_processus) + .arret_depuis_abort == 0) && + ((*s_etat_processus).at_exit + != NULL)) + { + erreur = evaluation(s_etat_processus, + (*s_etat_processus).at_exit, + 'E'); + } + } } } } @@ -3385,21 +3401,6 @@ rplinit(int argc, char *argv[], unsigned 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_undo; - while(l_element_courant != NULL) - { - l_element_suivant = (*((struct_liste_chainee *) l_element_courant)).suivant; liberation(s_etat_processus,