--- rpl/src/gestion_threads.c 2019/02/11 09:45:48 1.113 +++ rpl/src/gestion_threads.c 2024/01/09 07:33:48 1.121 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.31 - Copyright (C) 1989-2019 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.35 + Copyright (C) 1989-2024 Dr. BERTRAND Joël This file is part of RPL/2. @@ -77,15 +77,15 @@ lancement_thread(void *argument) s_etat_processus = (*s_argument_thread).s_nouvel_etat_processus; # ifndef SEMAPHORES_NOMMES - sem_init(&((*s_etat_processus).semaphore_fork), 0, 0); + if (sem_init(&((*s_etat_processus).semaphore_fork), 0, 0) != 0) # else if (((*s_etat_processus).semaphore_fork = sem_init3(0, getpid(), pthread_self(), SEM_FORK)) == SEM_FAILED) - { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - pthread_exit(NULL); - } # endif + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + pthread_exit(NULL); + } (*s_argument_thread).tid = pthread_self(); insertion_thread(s_etat_processus, d_faux); @@ -358,8 +358,10 @@ lancement_thread(void *argument) { l_element_suivant = (*l_element_courant).suivant; - if ((*((struct_descripteur_fichier *) (*l_element_courant) - .donnee)).pid == getpid()) + if (((*((struct_descripteur_fichier *) (*l_element_courant) + .donnee)).pid == getpid()) && + ((*((struct_descripteur_fichier *) (*l_element_courant) + .donnee)).tid == pthread_self())) { fclose((*((struct_descripteur_fichier *) (*l_element_courant).donnee)).descripteur_c);