--- rpl/src/instructions_r4.c 2012/08/22 10:47:17 1.61 +++ rpl/src/instructions_r4.c 2012/12/20 15:32:52 1.67 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.10 + RPL/2 (R) version 4.1.12 Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -1789,7 +1789,6 @@ instruction_read(struct_processus *s_eta return; } } - } while(ios != SQLITE_DONE); if (sqlite3_finalize(ppStmt) != SQLITE_OK) @@ -2427,7 +2426,11 @@ printf("L=%d\n", longueur_enregistrement if ((*s_etat_processus).var_volatile_requete_arret == -1) { - longueur_effective += ios; + if (ios >= 0) + { + longueur_effective += ios; + } + break; } @@ -2522,8 +2525,7 @@ printf("L=%d\n", longueur_enregistrement - ancienne_longueur_effective, MSG_DONTWAIT, (struct sockaddr *) &adresse_unix, &longueur_adresse); - } - while((ios == -1) && (errno == EINTR)); + } while((ios == -1) && (errno == EINTR)); } else if ((*((struct_socket *) (*s_objet_argument_1) .objet)).domaine == PF_INET) @@ -2538,8 +2540,7 @@ printf("L=%d\n", longueur_enregistrement - ancienne_longueur_effective, MSG_DONTWAIT, (struct sockaddr *) &adresse_ipv4, &longueur_adresse); - } - while((ios == -1) && (errno == EINTR)); + } while((ios == -1) && (errno == EINTR)); } else if ((*((struct_socket *) (*s_objet_argument_1) .objet)) .domaine == PF_INET6) @@ -2555,8 +2556,7 @@ printf("L=%d\n", longueur_enregistrement - ancienne_longueur_effective, MSG_DONTWAIT, (struct sockaddr *) &adresse_ipv6, &longueur_adresse); - } - while((ios == -1) && (errno == EINTR)); + } while((ios == -1) && (errno == EINTR)); # else if ((*s_etat_processus).langue == 'F') { @@ -2579,7 +2579,7 @@ printf("L=%d\n", longueur_enregistrement (*s_objet_argument_1).objet)).socket; poll_fd.events = POLLIN; - while((ios = poll(&poll_fd, 1, 100)) <= 0) + while((ios = poll(&poll_fd, 1, 10000)) <= 0) { // La fin de la trame n'est pas atteinte // et il reste quelque chose à lire. @@ -2588,6 +2588,15 @@ printf("L=%d\n", longueur_enregistrement { case EINTR: { + if ((*s_etat_processus) + .var_volatile_requete_arret == -1) + { + liberation(s_etat_processus, + s_objet_argument_1); + free(tampon_lecture); + return; + } + break; }