--- rpl/src/rpl.c 2017/07/12 15:42:43 1.196 +++ rpl/src/rpl.c 2017/08/03 08:30:49 1.198 @@ -5900,41 +5900,6 @@ rplinit(int argc, char *argv[], char *en l_element_courant = l_element_suivant; } - for(i = 0; i < (*s_etat_processus) - .nombre_instructions_externes; i++) - { - free((*s_etat_processus).s_instructions_externes[i] - .nom); - free((*s_etat_processus).s_instructions_externes[i] - .nom_bibliotheque); - } - - if ((*s_etat_processus).nombre_instructions_externes != 0) - { - free((*s_etat_processus).s_instructions_externes); - } - - l_element_courant = (void *) (*s_etat_processus) - .s_bibliotheques; - - while(l_element_courant != NULL) - { - l_element_suivant = (*((struct_liste_chainee *) - l_element_courant)).suivant; - - free((*((struct_bibliotheque *) - (*((struct_liste_chainee *) - l_element_courant)).donnee)).nom); - dlclose((*((struct_bibliotheque *) - (*((struct_liste_chainee *) - l_element_courant)).donnee)).descripteur); - free((*((struct_liste_chainee *) l_element_courant)) - .donnee); - free(l_element_courant); - - l_element_courant = l_element_suivant; - } - l_element_courant = (void *) (*s_etat_processus) .l_base_pile_last; while(l_element_courant != NULL) @@ -5950,6 +5915,14 @@ rplinit(int argc, char *argv[], char *en l_element_courant = l_element_suivant; } + while((*s_etat_processus).s_bibliotheques != NULL) + { + retrait_bibliotheque(s_etat_processus, + (struct_bibliotheque *) + (*((struct_liste_chainee *) + (*s_etat_processus).s_bibliotheques)).donnee); + } + l_element_courant = (void *) (*s_etat_processus) .l_base_pile_systeme; while(l_element_courant != NULL) @@ -6146,7 +6119,6 @@ rplinit(int argc, char *argv[], char *en pthread_mutex_destroy(&((*s_etat_processus).mutex_pile_processus)); pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); pthread_mutex_destroy(&((*s_etat_processus).mutex_interruptions)); - pthread_mutex_destroy(&((*s_etat_processus).mutex_signaux)); pthread_mutex_destroy(&mutex_sections_critiques); pthread_mutex_destroy(&mutex_liste_variables_partagees); @@ -6162,6 +6134,7 @@ rplinit(int argc, char *argv[], char *en free((*s_etat_processus).localisation); destruction_queue_signaux(s_etat_processus); + pthread_mutex_destroy(&((*s_etat_processus).mutex_signaux)); liberation_contexte_cas(s_etat_processus); free((*s_etat_processus).chemin_fichiers_temporaires); @@ -6180,6 +6153,7 @@ rplinit(int argc, char *argv[], char *en liberation_allocateur_buffer(s_etat_processus); pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation_buffer)); + pthread_mutex_destroy(&mutex_liste_threads); sys_free(s_etat_processus); sys_free(arg_exec);