--- rpl/src/rpl.c 2012/10/04 15:21:26 1.119 +++ rpl/src/rpl.c 2012/10/14 21:37:11 1.122 @@ -80,6 +80,9 @@ rplinit(int argc, char *argv[], char *en struct_processus *s_etat_processus; + struct_liste_variables_statiques *l_element_statique_courant; + struct_liste_variables_statiques *l_element_statique_suivant; + struct_table_variables_partagees s_variables_partagees; struct sigaction action; @@ -411,6 +414,23 @@ rplinit(int argc, char *argv[], char *en } # endif + if (lancement_thread_signaux(s_etat_processus) != d_absence_erreur) + { + erreur = d_es_signal; + + if ((*s_etat_processus).langue == 'F') + { + printf("+++Système : Initialisation des signaux POSIX " + "impossible\n"); + } + else + { + printf("+++System : Initialization of POSIX signals failed\n"); + } + + return(EXIT_FAILURE); + } + action.sa_handler = interruption1; action.sa_flags = 0; @@ -3345,20 +3365,17 @@ rplinit(int argc, char *argv[], char *en (*s_etat_processus).s_arbre_variables, d_vrai); free((*s_etat_processus).pointeurs_caracteres_variables); -#warning A FIXER - /* - for(i = 0; i < (*s_etat_processus) - .nombre_variables_statiques; i++) + l_element_statique_courant = (*s_etat_processus) + .l_liste_variables_statiques; + + while(l_element_statique_courant != NULL) { - liberation(s_etat_processus, (*s_etat_processus) - .s_liste_variables_statiques[i].objet); - free((*s_etat_processus) - .s_liste_variables_statiques[i].nom); + l_element_statique_suivant = + (*l_element_statique_courant).suivant; + free(l_element_statique_courant); + l_element_statique_courant = l_element_statique_suivant; } - free((*s_etat_processus).s_liste_variables_statiques); - */ - for(i = 0; i < (*((*s_etat_processus) .s_liste_variables_partagees)).nombre_variables; i++) @@ -3749,6 +3766,7 @@ rplinit(int argc, char *argv[], char *en } free(arg_exec); + arret_thread_signaux(s_etat_processus); free(s_etat_processus); # ifdef DEBUG_MEMOIRE