--- rpl/src/instructions_p8.c 2011/12/05 19:49:41 1.3 +++ rpl/src/instructions_p8.c 2011/12/06 13:27:14 1.4 @@ -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