--- rpl/src/instructions_d5.c 2016/03/15 16:31:15 1.142 +++ rpl/src/instructions_d5.c 2016/03/17 16:31:58 1.146 @@ -2275,7 +2275,7 @@ instruction_detach(struct_processus *s_e { envoi_signal_processus((*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)).thread).pid, - rpl_sigurg); + rpl_sigurg, d_faux); } else { @@ -2283,13 +2283,13 @@ instruction_detach(struct_processus *s_e { envoi_signal_processus((*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)).thread) - .pid, rpl_sigabort); + .pid, rpl_sigabort, d_faux); } else { envoi_signal_processus((*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)).thread) - .pid, rpl_sigstop); + .pid, rpl_sigstop, d_faux); } } } @@ -2821,13 +2821,6 @@ instruction_detach(struct_processus *s_e retrait_thread(s_etat_processus); - 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(&((*s_etat_processus).protection_liste_mutexes)); - pthread_mutex_destroy(&mutex_sections_critiques); - # ifndef SEMAPHORES_NOMMES sem_post(&((*s_etat_processus).semaphore_fork)); sem_destroy(&((*s_etat_processus).semaphore_fork)); @@ -2842,13 +2835,21 @@ instruction_detach(struct_processus *s_e liberation_contexte_cas(s_etat_processus); destruction_queue_signaux(s_etat_processus); + free((*s_etat_processus).localisation); + free((*s_etat_processus).chemin_fichiers_temporaires); + free(s_argument_thread); + liberation_allocateur(s_etat_processus); liberation_allocateur_buffer(s_etat_processus); + + 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(&((*s_etat_processus).protection_liste_mutexes)); pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation_buffer)); + pthread_mutex_destroy(&mutex_sections_critiques); - free((*s_etat_processus).localisation); - free((*s_etat_processus).chemin_fichiers_temporaires); - free(s_argument_thread); sys_free(s_etat_processus); # ifdef DEBUG_MEMOIRE @@ -2949,7 +2950,8 @@ instruction_detach(struct_processus *s_e // Le fils peut être présent sans être en attente du signal de départ. - if (envoi_signal_processus((*s_argument_thread).pid, rpl_sigstart) != 0) + if (envoi_signal_processus((*s_argument_thread).pid, rpl_sigstart, + d_vrai) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus));