--- rpl/src/gestion_processus.c 2010/04/29 07:30:57 1.9 +++ rpl/src/gestion_processus.c 2010/06/04 07:48:19 1.14 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.15 + RPL/2 (R) version 4.0.16 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -714,7 +714,7 @@ surveillance_processus(void *argument) } BUG(l_element_courant == NULL, - printf("Process or thread not found")); + printf("Process or thread not found\n")); if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0) @@ -1754,6 +1754,8 @@ surveillance_processus(void *argument) (*s_etat_processus).l_base_pile_processus = (*l_element_courant).suivant; + free((*(*l_element_courant).donnee).objet); + free((*l_element_courant).donnee); free(l_element_courant); l_element_courant = (struct_liste_chainee *) @@ -1763,6 +1765,9 @@ surveillance_processus(void *argument) { (*l_element_precedent).suivant = (*l_element_courant).suivant; + + free((*(*l_element_courant).donnee).objet); + free((*l_element_courant).donnee); free(l_element_courant); } @@ -1775,52 +1780,53 @@ surveillance_processus(void *argument) } } - if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme_processus_fils = d_es_processus; - } - } - - if ((*s_etat_processus).debug == d_vrai) - if (((*s_etat_processus).type_debug & - d_debug_processus) != 0) - { - if ((*s_argument_thread).processus_detache == d_vrai) + if ((*s_etat_processus).debug == d_vrai) + if (((*s_etat_processus).type_debug & + d_debug_processus) != 0) { - if ((*s_etat_processus).langue == 'F') + if ((*s_argument_thread).processus_detache == d_vrai) { - printf("[%d] Arręt du thread de surveillance du" - " processus %d\n", (int) getpid(), - (int) (*s_argument_thread).pid); + if ((*s_etat_processus).langue == 'F') + { + printf("[%d] Arręt du thread de surveillance du" + " processus %d\n", (int) getpid(), + (int) (*s_argument_thread).pid); + } + else + { + printf("[%d] Stop monitoring of process %d", (int) getpid(), + (int) (*s_argument_thread).pid); + } } else { - printf("[%d] Stop monitoring of process %d", (int) getpid(), - (int) (*s_argument_thread).pid); + if ((*s_etat_processus).langue == 'F') + { + printf("[%d] Arręt du thread de surveillance du" + " thread %llu\n", (int) getpid(), + (unsigned long long) (*s_argument_thread) + .tid); + } + else + { + printf("[%d] Stop monitoring of thread %llu", + (int) getpid(), + (unsigned long long) (*s_argument_thread) + .tid); + } } + + fflush(stdout); } - else + + retrait_thread_surveillance(s_etat_processus, s_argument_thread); + + if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0) { - if ((*s_etat_processus).langue == 'F') - { - printf("[%d] Arręt du thread de surveillance du" - " thread %llu\n", (int) getpid(), - (unsigned long long) (*s_argument_thread) - .tid); - } - else - { - printf("[%d] Stop monitoring of thread %llu", (int) getpid(), - (unsigned long long) (*s_argument_thread) - .tid); - } + (*s_etat_processus).erreur_systeme_processus_fils = d_es_processus; } - - fflush(stdout); } - retrait_thread_surveillance(s_etat_processus, s_argument_thread); - pthread_exit(NULL); } @@ -3379,7 +3385,7 @@ lecture_pipe(struct_processus *s_etat_pr ================================================================================ */ -inline void +extern inline void scrutation_injection(struct_processus *s_etat_processus) { fd_set ensemble_descripteurs;