--- rpl/src/instructions_p8.c 2011/12/05 19:49:41 1.3 +++ rpl/src/instructions_p8.c 2012/01/05 10:19:03 1.5 @@ -1,7 +1,7 @@ /* ================================================================================ RPL/2 (R) version 4.1.5 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -131,12 +131,12 @@ instruction_poll(struct_processus *s_eta if ((*s_objet_argument_3).type == SCK) { s_poll.fd = (*((struct_socket *) - (*s_objet_argument_1).objet)).socket; + (*s_objet_argument_3).objet)).socket; } else { s_poll.fd = (*((struct_fichier *) - (*s_objet_argument_1).objet)).descripteur; + (*s_objet_argument_3).objet)).descripteur; } if ((*s_objet_argument_2).type != LST) @@ -219,12 +219,6 @@ instruction_poll(struct_processus *s_eta return; } - if ((s_objet_resultat = allocation(s_etat_processus, INT)) == NULL) - { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - return; - } - do { drapeau = d_vrai; @@ -255,7 +249,6 @@ instruction_poll(struct_processus *s_eta liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2); liberation(s_etat_processus, s_objet_argument_3); - liberation(s_etat_processus, s_objet_resultat); (*s_etat_processus).erreur_execution = d_ex_erreur_acces_fichier; @@ -292,6 +285,12 @@ instruction_poll(struct_processus *s_eta } } while(drapeau == d_faux); + if ((s_objet_resultat = allocation(s_etat_processus, INT)) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } + if (ios > 0) { // Sortie sur un événement