--- rpl/src/interruptions.c 2013/05/23 09:20:08 1.130 +++ rpl/src/interruptions.c 2013/05/23 12:45:08 1.131 @@ -2974,8 +2974,14 @@ envoi_signal_thread(pthread_t tid, enum struct_processus *s_etat_processus; + if (pthread_mutex_lock(&mutex_interruptions) != 0) + { + return(1); + } + if (pthread_mutex_lock(&mutex_liste_threads) != 0) { + pthread_mutex_unlock(&mutex_interruptions); return(1); } @@ -3002,25 +3008,19 @@ envoi_signal_thread(pthread_t tid, enum s_etat_processus = (*((struct_thread *) (*l_element_courant).donnee)) .s_etat_processus; - if (pthread_mutex_lock(&mutex_interruptions) != 0) - { - pthread_mutex_unlock(&mutex_liste_threads); - return(1); - } - (*s_etat_processus).signaux_en_queue [(*s_etat_processus).pointeur_signal_ecriture] = signal; (*s_etat_processus).pointeur_signal_ecriture = ((*s_etat_processus).pointeur_signal_ecriture + 1) % LONGUEUR_QUEUE_SIGNAUX; - if (pthread_mutex_unlock(&mutex_interruptions) != 0) + if (pthread_mutex_unlock(&mutex_liste_threads) != 0) { - pthread_mutex_unlock(&mutex_liste_threads); + pthread_mutex_unlock(&mutex_interruptions); return(1); } - if (pthread_mutex_unlock(&mutex_liste_threads) != 0) + if (pthread_mutex_unlock(&mutex_interruptions) != 0) { return(1); }