--- rpl/src/instructions_r2.c 2012/09/30 20:46:46 1.40 +++ rpl/src/instructions_r2.c 2024/01/09 07:33:53 1.79 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.10 - Copyright (C) 1989-2012 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. @@ -350,7 +350,7 @@ instruction_return(struct_processus *s_e unsigned char *instruction_majuscule; unsigned char *tampon; - unsigned long registre_position_courante; + integer8 registre_position_courante; struct_liste_chainee *tampon_expression; @@ -381,21 +381,6 @@ instruction_return(struct_processus *s_e return; } - if ((*s_etat_processus).niveau_courant == ((*s_etat_processus) - .niveau_initial + 1)) - { - /* - * On ne peut rien dépiler ! - */ - - if ((*s_etat_processus).mode_execution_programme == 'Y') - { - (*s_etat_processus).requete_arret = 'Y'; - } - - return; - } - tampon = (*s_etat_processus).instruction_courante; tampon_expression = (*s_etat_processus).expression_courante; @@ -416,7 +401,7 @@ instruction_return(struct_processus *s_e (*s_etat_processus).instruction_courante) == d_faux) { (*s_etat_processus).erreur_systeme = d_es; - instruction_majuscule = conversion_majuscule( + instruction_majuscule = conversion_majuscule(s_etat_processus, (*s_etat_processus).instruction_courante); if (instruction_majuscule == NULL) @@ -549,7 +534,7 @@ instruction_return(struct_processus *s_e (*s_etat_processus).niveau_courant--; - if (retrait_variable_par_niveau( + if (retrait_variables_par_niveau( s_etat_processus) == d_erreur) { return; @@ -796,7 +781,7 @@ instruction_return(struct_processus *s_e (*s_etat_processus).niveau_courant--; - if (retrait_variable_par_niveau(s_etat_processus) + if (retrait_variables_par_niveau(s_etat_processus) == d_erreur) { return; @@ -886,13 +871,13 @@ instruction_rdm(struct_processus *s_etat logical1 drapeau_fin_objet_originel; logical1 variable_partagee; - unsigned long i; - unsigned long j; - unsigned long k; - unsigned long l; - unsigned long nombre_colonnes; - unsigned long nombre_dimensions; - unsigned long nombre_lignes; + integer8 i; + integer8 j; + integer8 k; + integer8 l; + integer8 nombre_colonnes; + integer8 nombre_dimensions; + integer8 nombre_lignes; (*s_etat_processus).erreur_execution = d_ex; @@ -980,27 +965,12 @@ instruction_rdm(struct_processus *s_etat if (s_objet_initial == NULL) { - if (pthread_mutex_lock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - if (recherche_variable_partagee(s_etat_processus, (*(*s_etat_processus).pointeur_variable_courante).nom, (*(*s_etat_processus).pointeur_variable_courante) .variable_partagee, (*(*s_etat_processus) - .pointeur_variable_courante).origine) - == d_faux) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -1023,7 +993,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1055,7 +1025,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1085,7 +1055,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1108,7 +1078,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1145,7 +1115,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1174,7 +1144,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1190,12 +1160,13 @@ instruction_rdm(struct_processus *s_etat nombre_lignes; if (((*((struct_vecteur *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(integer8))) == NULL) + = malloc(((size_t) nombre_lignes) * sizeof(integer8))) + == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1232,7 +1203,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1248,12 +1219,12 @@ instruction_rdm(struct_processus *s_etat nombre_lignes; if (((*((struct_vecteur *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(real8))) == NULL) + = malloc(((size_t) nombre_lignes) * sizeof(real8))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1291,7 +1262,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1307,13 +1278,13 @@ instruction_rdm(struct_processus *s_etat nombre_lignes; if (((*((struct_vecteur *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(struct_complexe16))) - == NULL) + = malloc(((size_t) nombre_lignes) * + sizeof(struct_complexe16))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1360,7 +1331,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1376,12 +1347,13 @@ instruction_rdm(struct_processus *s_etat nombre_lignes; if (((*((struct_vecteur *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(integer8))) == NULL) + = malloc(((size_t) nombre_lignes) * sizeof(integer8))) + == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1431,7 +1403,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1447,12 +1419,12 @@ instruction_rdm(struct_processus *s_etat nombre_lignes; if (((*((struct_vecteur *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(real8))) == NULL) + = malloc(((size_t) nombre_lignes) * sizeof(real8))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1503,7 +1475,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1519,13 +1491,13 @@ instruction_rdm(struct_processus *s_etat nombre_lignes; if (((*((struct_vecteur *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(struct_complexe16))) - == NULL) + = malloc(((size_t) nombre_lignes) * + sizeof(struct_complexe16))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1580,7 +1552,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1618,7 +1590,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1636,13 +1608,13 @@ instruction_rdm(struct_processus *s_etat .nombre_colonnes = nombre_colonnes; if (((*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(integer8 *))) + = malloc(((size_t) nombre_lignes) * sizeof(integer8 *))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1657,12 +1629,14 @@ instruction_rdm(struct_processus *s_etat { if ((((integer8 **) (*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau)[i] = - malloc(nombre_colonnes * sizeof(integer8))) == NULL) + malloc(((size_t) nombre_colonnes) * sizeof(integer8))) + == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) + != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1703,7 +1677,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1721,13 +1695,13 @@ instruction_rdm(struct_processus *s_etat .nombre_colonnes = nombre_colonnes; if (((*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(real8 *))) + = malloc(((size_t) nombre_lignes) * sizeof(real8 *))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1742,12 +1716,14 @@ instruction_rdm(struct_processus *s_etat { if ((((real8 **) (*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau)[i] = - malloc(nombre_colonnes * sizeof(real8))) == NULL) + malloc(((size_t) nombre_colonnes) * sizeof(real8))) + == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) + != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1788,7 +1764,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1806,13 +1782,13 @@ instruction_rdm(struct_processus *s_etat .nombre_colonnes = nombre_colonnes; if (((*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(struct_complexe16 *))) - == NULL) + = malloc(((size_t) nombre_lignes) * + sizeof(struct_complexe16 *))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1827,13 +1803,14 @@ instruction_rdm(struct_processus *s_etat { if ((((struct_complexe16 **) (*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau)[i] = - malloc(nombre_colonnes * + malloc(((size_t) nombre_colonnes) * sizeof(struct_complexe16))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) + != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1885,7 +1862,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1903,13 +1880,13 @@ instruction_rdm(struct_processus *s_etat .nombre_colonnes = nombre_colonnes; if (((*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(integer8 *))) + = malloc(((size_t) nombre_lignes) * sizeof(integer8 *))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1926,13 +1903,14 @@ instruction_rdm(struct_processus *s_etat { if ((((integer8 **) (*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau)[i] = - malloc(nombre_colonnes * + malloc(((size_t) nombre_colonnes) * sizeof(integer8))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) + != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1984,7 +1962,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2002,13 +1980,13 @@ instruction_rdm(struct_processus *s_etat .nombre_colonnes = nombre_colonnes; if (((*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(real8 *))) + = malloc(((size_t) nombre_lignes) * sizeof(real8 *))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2025,13 +2003,14 @@ instruction_rdm(struct_processus *s_etat { if ((((real8 **) (*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau)[i] = - malloc(nombre_colonnes * + malloc(((size_t) nombre_colonnes) * sizeof(real8))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) + != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2083,7 +2062,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2101,13 +2080,13 @@ instruction_rdm(struct_processus *s_etat .nombre_colonnes = nombre_colonnes; if (((*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau - = malloc(nombre_lignes * sizeof(struct_complexe16 *))) - == NULL) + = malloc(((size_t) nombre_lignes) + * sizeof(struct_complexe16 *))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2124,13 +2103,14 @@ instruction_rdm(struct_processus *s_etat { if ((((struct_complexe16 **) (*((struct_matrice *) (*s_objet_redimensionne).objet)).tableau)[i] = - malloc(nombre_colonnes * + malloc(((size_t) nombre_colonnes) * sizeof(struct_complexe16))) == NULL) { if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) + != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2188,7 +2168,7 @@ instruction_rdm(struct_processus *s_etat if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2223,12 +2203,11 @@ instruction_rdm(struct_processus *s_etat { if (variable_partagee == d_vrai) { - (*(*s_etat_processus).s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet = s_objet_redimensionne; + (*(*s_etat_processus).pointeur_variable_partagee_courante).objet = + s_objet_redimensionne; if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return;