--- rpl/src/instructions_g4.c 2011/01/03 12:08:05 1.15 +++ rpl/src/instructions_g4.c 2020/01/10 11:15:45 1.68 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.20 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.32 + Copyright (C) 1989-2020 Dr. BERTRAND Joël This file is part of RPL/2. @@ -47,10 +47,10 @@ instruction_getc(struct_processus *s_eta struct_objet *s_objet_argument_2; struct_objet *s_objet_resultat; - unsigned long i; - unsigned long j; - unsigned long colonne; - unsigned long nombre_colonnes; + integer8 i; + integer8 j; + integer8 colonne; + integer8 nombre_colonnes; (*s_etat_processus).erreur_execution = d_ex; @@ -119,37 +119,20 @@ instruction_getc(struct_processus *s_eta liberation(s_etat_processus, s_objet_argument_2); - s_objet_argument_2 = (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet; + s_objet_argument_2 = (*(*s_etat_processus).pointeur_variable_courante) + .objet; presence_variable = d_vrai; if (s_objet_argument_2 == NULL) { // Variable partagée - 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).s_liste_variables - [(*s_etat_processus).position_variable_courante].nom, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] - .variable_partagee, (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].origine) - == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .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; - } - liberation(s_etat_processus, s_objet_argument_1); (*s_etat_processus).erreur_systeme = d_es; @@ -160,9 +143,7 @@ instruction_getc(struct_processus *s_eta } s_objet_argument_2 = (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet; + .pointeur_variable_partagee_courante).objet; variable_partagee = d_vrai; } else @@ -195,7 +176,8 @@ instruction_getc(struct_processus *s_eta 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; @@ -222,7 +204,8 @@ instruction_getc(struct_processus *s_eta 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; @@ -250,7 +233,7 @@ instruction_getc(struct_processus *s_eta 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; @@ -273,7 +256,7 @@ instruction_getc(struct_processus *s_eta 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; @@ -297,14 +280,15 @@ instruction_getc(struct_processus *s_eta (*s_objet_resultat).type = MIN; if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau = malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_lignes * + .tableau = malloc(((size_t) (*((struct_matrice *) + (*s_objet_resultat).objet)).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; @@ -321,14 +305,14 @@ instruction_getc(struct_processus *s_eta .objet)).nombre_lignes; i++) { if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau[i] = malloc(nombre_colonnes * - sizeof(integer8))) == NULL) + .tableau[i] = 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; @@ -374,14 +358,15 @@ instruction_getc(struct_processus *s_eta (*s_objet_resultat).type = MRL; if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau = malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_lignes * + .tableau = malloc(((size_t) (*((struct_matrice *) + (*s_objet_resultat).objet)).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; @@ -398,14 +383,14 @@ instruction_getc(struct_processus *s_eta .objet)).nombre_lignes; i++) { if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau[i] = malloc(nombre_colonnes * - sizeof(real8))) == NULL) + .tableau[i] = 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; @@ -451,14 +436,15 @@ instruction_getc(struct_processus *s_eta (*s_objet_resultat).type = MCX; if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau = malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_lignes * + .tableau = malloc(((size_t) (*((struct_matrice *) + (*s_objet_resultat).objet)).nombre_lignes) * sizeof(complex16 *))) == 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; @@ -475,14 +461,14 @@ instruction_getc(struct_processus *s_eta .objet)).nombre_lignes; i++) { if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau[i] = malloc(nombre_colonnes * - sizeof(complex16))) == NULL) + .tableau[i] = malloc(((size_t) nombre_colonnes) + * sizeof(complex16))) == 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; @@ -538,7 +524,7 @@ instruction_getc(struct_processus *s_eta 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; @@ -562,7 +548,7 @@ instruction_getc(struct_processus *s_eta 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; @@ -584,7 +570,7 @@ instruction_getc(struct_processus *s_eta 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; @@ -631,10 +617,10 @@ instruction_getr(struct_processus *s_eta struct_objet *s_objet_argument_2; struct_objet *s_objet_resultat; - unsigned long i; - unsigned long j; - unsigned long ligne; - unsigned long nombre_lignes; + integer8 i; + integer8 j; + integer8 ligne; + integer8 nombre_lignes; (*s_etat_processus).erreur_execution = d_ex; @@ -700,37 +686,20 @@ instruction_getr(struct_processus *s_eta liberation(s_etat_processus, s_objet_argument_2); - s_objet_argument_2 = (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet; + s_objet_argument_2 = (*(*s_etat_processus).pointeur_variable_courante) + .objet; presence_variable = d_vrai; if (s_objet_argument_2 == NULL) { // Variable partagée - 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).s_liste_variables - [(*s_etat_processus).position_variable_courante].nom, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] - .variable_partagee, (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].origine) - == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .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; - } - liberation(s_etat_processus, s_objet_argument_1); (*s_etat_processus).erreur_systeme = d_es; @@ -741,9 +710,7 @@ instruction_getr(struct_processus *s_eta } s_objet_argument_2 = (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet; + .pointeur_variable_partagee_courante).objet; variable_partagee = d_vrai; } else @@ -776,7 +743,8 @@ instruction_getr(struct_processus *s_eta 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; @@ -804,7 +772,8 @@ instruction_getr(struct_processus *s_eta 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; @@ -833,7 +802,7 @@ instruction_getr(struct_processus *s_eta 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; @@ -857,7 +826,7 @@ instruction_getr(struct_processus *s_eta 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; @@ -876,12 +845,12 @@ instruction_getr(struct_processus *s_eta .nombre_colonnes; if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau = - malloc(nombre_lignes * sizeof(void *))) == NULL) + malloc(((size_t) nombre_lignes) * sizeof(void *))) == 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; @@ -909,15 +878,16 @@ instruction_getr(struct_processus *s_eta .objet)) - 1; if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau[i] = malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_colonnes * + .tableau[i] = malloc(((size_t) + (*((struct_matrice *) + (*s_objet_resultat).objet)).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; @@ -961,15 +931,16 @@ instruction_getr(struct_processus *s_eta .objet)) - 1; if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau[i] = malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_colonnes * + .tableau[i] = malloc(((size_t) + (*((struct_matrice *) + (*s_objet_resultat).objet)).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; @@ -1013,15 +984,16 @@ instruction_getr(struct_processus *s_eta .objet)) - 1; if (((*((struct_matrice *) (*s_objet_resultat).objet)) - .tableau[i] = malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_colonnes * + .tableau[i] = malloc(((size_t) + (*((struct_matrice *) + (*s_objet_resultat).objet)).nombre_colonnes) * sizeof(complex16))) == 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; @@ -1066,8 +1038,7 @@ instruction_getr(struct_processus *s_eta 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; @@ -1091,8 +1062,7 @@ instruction_getr(struct_processus *s_eta 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; @@ -1114,8 +1084,7 @@ instruction_getr(struct_processus *s_eta 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; @@ -1238,7 +1207,7 @@ instruction_gamma(struct_processus *s_et if ((*s_objet_argument).type == INT) { - argument_reel = (*((integer8 *) (*s_objet_argument).objet)); + argument_reel = (real8) (*((integer8 *) (*s_objet_argument).objet)); } else {