--- rpl/src/bibliotheques_externes.c 2010/05/25 18:09:44 1.10 +++ rpl/src/bibliotheques_externes.c 2011/09/20 09:51:42 1.36 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.16 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.3 + Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; @@ -161,24 +161,15 @@ chargement_bibliotheque(struct_processus } } -# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return(NULL); } -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return(NULL); - } -# endif (*onloading)(&rpl_arguments); -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { if (errno != EINTR) { @@ -186,16 +177,6 @@ chargement_bibliotheque(struct_processus return(NULL); } } -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) - { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return(NULL); - } - } -# endif if ((*s_etat_processus).profilage == d_vrai) { @@ -334,6 +315,8 @@ chargement_bibliotheque(struct_processus } } + dlerror(); + if (pthread_mutex_unlock(&mutex) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -589,33 +572,15 @@ retrait_bibliotheque(struct_processus *s } } -# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return(d_erreur); } -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return(d_erreur); - } -# endif (*onclosing)(&rpl_arguments); -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) - { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return(d_erreur); - } - } -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { if (errno != EINTR) { @@ -623,7 +588,6 @@ retrait_bibliotheque(struct_processus *s return(d_erreur); } } -# endif if ((*s_etat_processus).profilage == d_vrai) { @@ -1118,6 +1082,8 @@ execution_fonction_de_bibliotheque(struc } } + dlerror(); + if (pthread_mutex_unlock(&mutex) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -1173,24 +1139,15 @@ execution_fonction_de_bibliotheque(struc } } -# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return(d_faux); } -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return(d_faux); - } -# endif (*fonction)(&rpl_arguments); -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { if (errno != EINTR) { @@ -1198,16 +1155,6 @@ execution_fonction_de_bibliotheque(struc return(d_faux); } } -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) - { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return(d_faux); - } - } -# endif if ((*s_etat_processus).profilage == d_vrai) { @@ -1663,7 +1610,6 @@ tri_base_symboles_externes(struct_proces do { indice_i = indice_j; - terminaison_boucle_3 = d_faux; do @@ -1757,7 +1703,7 @@ tri_base_symboles_externes(struct_proces indice_i++; } while((unsigned long) (indice_i + 1) < - (*s_etat_processus).nombre_variables); + (*s_etat_processus).nombre_instructions_externes); return; }