--- rpl/src/instructions_c4.c 2013/03/20 17:11:44 1.49 +++ rpl/src/instructions_c4.c 2024/01/09 07:33:49 1.84 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 - Copyright (C) 1989-2013 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.35 + Copyright (C) 1989-2024 Dr. BERTRAND Joël This file is part of RPL/2. @@ -471,8 +471,8 @@ instruction_convert(struct_processus *s_ (unsigned char *) (*s_objet_argument_2).objet, (unsigned char *) (*s_objet_argument_1).objet); - if (alsprintf(&executable_candidat, "%s/bin/rplconvert", - d_exec_path) < 0) + if (alsprintf(s_etat_processus, &executable_candidat, + "%s/bin/rplconvert", d_exec_path) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -506,8 +506,8 @@ instruction_convert(struct_processus *s_ (unsigned char *) (*s_objet_argument_2).objet, (unsigned char *) (*s_objet_argument_1).objet); - if (alsprintf(&executable_candidat, "%s/bin/rplconvert", - (*s_etat_processus).rpl_home) < 0) + if (alsprintf(s_etat_processus, &executable_candidat, + "%s/bin/rplconvert", (*s_etat_processus).rpl_home) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -549,6 +549,7 @@ instruction_convert(struct_processus *s_ (*s_etat_processus).instruction_courante; (*s_etat_processus).instruction_courante = ligne; + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); (*s_etat_processus).instruction_courante = @@ -663,6 +664,8 @@ instruction_close(struct_processus *s_et struct_objet *s_objet_argument; + unsigned char socket_en_ecoute; + (*s_etat_processus).erreur_execution = d_ex; if ((*s_etat_processus).affichage_arguments == 'Y') @@ -851,6 +854,7 @@ instruction_close(struct_processus *s_et socket = -1; socket_connectee = d_faux; + socket_en_ecoute = 'Y'; while(l_element_courant != NULL) { @@ -862,6 +866,8 @@ instruction_close(struct_processus *s_et (*(*l_element_courant).donnee).objet)).socket; socket_connectee = (*((struct_socket *) (*(*l_element_courant).donnee).objet)).socket_connectee; + socket_en_ecoute = (*((struct_socket *) + (*(*l_element_courant).donnee).objet)).socket_en_ecoute; if (l_element_precedent == NULL) { @@ -902,7 +908,10 @@ instruction_close(struct_processus *s_et if (socket_connectee == d_vrai) { - shutdown(socket, SHUT_RDWR); + if (socket_en_ecoute == 'N') + { + shutdown(socket, SHUT_RDWR); + } } if (close(socket) != 0) @@ -1159,11 +1168,11 @@ instruction_cswp(struct_processus *s_eta if ((*s_objet_argument_3).type == MIN) { - if ((colonne_1 < 0) || (colonne_1 > ((signed long) + if ((colonne_1 < 0) || (colonne_1 > (*((struct_matrice *) (*s_objet_argument_3).objet)) - .nombre_colonnes) - 1) || (colonne_2 < 0) || (colonne_2 > - ((signed long) (*((struct_matrice *) - (*s_objet_argument_3).objet)).nombre_colonnes) - 1)) + .nombre_colonnes - 1) || (colonne_2 < 0) || (colonne_2 > + (*((struct_matrice *) + (*s_objet_argument_3).objet)).nombre_colonnes - 1)) { liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2); @@ -1196,11 +1205,11 @@ instruction_cswp(struct_processus *s_eta } else if ((*s_objet_argument_3).type == MRL) { - if ((colonne_1 < 0) || (colonne_1 > ((signed long) + if ((colonne_1 < 0) || (colonne_1 > (*((struct_matrice *) (*s_objet_argument_3).objet)) - .nombre_colonnes) - 1) || (colonne_2 < 0) || (colonne_2 > - ((signed long) (*((struct_matrice *) - (*s_objet_argument_3).objet)).nombre_colonnes) - 1)) + .nombre_colonnes - 1) || (colonne_2 < 0) || (colonne_2 > + (*((struct_matrice *) + (*s_objet_argument_3).objet)).nombre_colonnes - 1)) { liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2); @@ -1233,11 +1242,11 @@ instruction_cswp(struct_processus *s_eta } else if ((*s_objet_argument_3).type == MCX) { - if ((colonne_1 < 0) || (colonne_1 > ((signed long) + if ((colonne_1 < 0) || (colonne_1 > (*((struct_matrice *) (*s_objet_argument_3).objet)) - .nombre_colonnes) - 1) || (colonne_2 < 0) || (colonne_2 > - ((signed long) (*((struct_matrice *) - (*s_objet_argument_3).objet)).nombre_colonnes) - 1)) + .nombre_colonnes - 1) || (colonne_2 < 0) || (colonne_2 > + (*((struct_matrice *) + (*s_objet_argument_3).objet)).nombre_colonnes - 1)) { liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2);