--- rpl/src/instructions_s3.c 2011/06/21 15:26:34 1.22 +++ rpl/src/instructions_s3.c 2014/04/25 07:37:33 1.51 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.0.prerelease.2 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.18 + Copyright (C) 1989-2014 Dr. BERTRAND Joël This file is part of RPL/2. @@ -47,7 +47,10 @@ instruction_sub(struct_processus *s_etat struct_objet *s_objet_argument_3; struct_objet *s_objet_resultat; - unsigned long i; + unsigned char *ptr1; + unsigned char *ptr2; + + integer8 i; (*s_etat_processus).erreur_execution = d_ex; @@ -144,7 +147,8 @@ instruction_sub(struct_processus *s_etat if ((*s_objet_argument_3).type == CHN) { if ((*((integer8 *) (*s_objet_argument_1).objet)) > (integer8) - strlen((unsigned char *) (*s_objet_argument_3).objet)) + longueur_chaine(s_etat_processus, + (unsigned char *) (*s_objet_argument_3).objet)) { liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2); @@ -160,14 +164,39 @@ instruction_sub(struct_processus *s_etat return; } - if (((*s_objet_resultat).objet = extraction_chaine((unsigned char *) + if ((ptr1 = pointeur_ieme_caractere(s_etat_processus, (unsigned char *) (*s_objet_argument_3).objet, (*((integer8 *) - (*s_objet_argument_2).objet)), (*((integer8 *) - (*s_objet_argument_1).objet)))) == NULL) + (*s_objet_argument_2).objet)) - 1)) == NULL) + { + liberation(s_etat_processus, s_objet_argument_1); + liberation(s_etat_processus, s_objet_argument_2); + liberation(s_etat_processus, s_objet_argument_3); + + (*s_etat_processus).erreur_execution = d_ex_argument_invalide; + return; + } + + if ((ptr2 = pointeur_ieme_caractere(s_etat_processus, ptr1, + (*((integer8 *) (*s_objet_argument_1).objet)) + - ((*((integer8 *) (*s_objet_argument_2).objet)) - 1))) == NULL) + { + liberation(s_etat_processus, s_objet_argument_1); + liberation(s_etat_processus, s_objet_argument_2); + liberation(s_etat_processus, s_objet_argument_3); + + (*s_etat_processus).erreur_execution = d_ex_argument_invalide; + return; + } + + if (((*s_objet_resultat).objet = malloc(((size_t) ((ptr2 - ptr1) + 1)) * + sizeof(unsigned char))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; } + + strncpy((unsigned char *) (*s_objet_resultat).objet, ptr1, + (size_t) (ptr2 - ptr1))[ptr2 - ptr1] = d_code_fin_chaine; } /* @@ -192,7 +221,7 @@ instruction_sub(struct_processus *s_etat .objet; i = 1; - while(i < (unsigned long) (*((integer8 *) (*s_objet_argument_2).objet))) + while(i < (*((integer8 *) (*s_objet_argument_2).objet))) { if (l_element_courant == NULL) { @@ -215,7 +244,7 @@ instruction_sub(struct_processus *s_etat (*s_objet_argument_3).objet = l_element_courant; - while(i < (unsigned long) (*((integer8 *) (*s_objet_argument_1).objet))) + while(i < (*((integer8 *) (*s_objet_argument_1).objet))) { if (l_element_courant == NULL) { @@ -458,26 +487,12 @@ instruction_sto_plus(struct_processus *s if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -501,12 +516,10 @@ instruction_sto_plus(struct_processus *s variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -561,7 +574,7 @@ instruction_sto_plus(struct_processus *s 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; @@ -577,7 +590,7 @@ instruction_sto_plus(struct_processus *s 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; @@ -598,7 +611,7 @@ instruction_sto_plus(struct_processus *s 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; @@ -624,18 +637,16 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -658,7 +669,7 @@ instruction_sto_plus(struct_processus *s } 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; @@ -745,26 +756,12 @@ instruction_sto_plus(struct_processus *s if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -788,12 +785,10 @@ instruction_sto_plus(struct_processus *s variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -848,7 +843,7 @@ instruction_sto_plus(struct_processus *s 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; @@ -864,7 +859,7 @@ instruction_sto_plus(struct_processus *s 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; @@ -885,7 +880,7 @@ instruction_sto_plus(struct_processus *s 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; @@ -911,18 +906,16 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -945,7 +938,7 @@ instruction_sto_plus(struct_processus *s } 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; @@ -1189,26 +1182,12 @@ instruction_sto_moins(struct_processus * if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -1232,12 +1211,10 @@ instruction_sto_moins(struct_processus * variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -1292,7 +1269,7 @@ instruction_sto_moins(struct_processus * 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; @@ -1308,7 +1285,7 @@ instruction_sto_moins(struct_processus * 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; @@ -1329,7 +1306,7 @@ instruction_sto_moins(struct_processus * 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; @@ -1355,18 +1332,15 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -1389,7 +1363,7 @@ instruction_sto_moins(struct_processus * } 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; @@ -1476,26 +1450,12 @@ instruction_sto_moins(struct_processus * if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -1519,12 +1479,10 @@ instruction_sto_moins(struct_processus * variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -1579,7 +1537,7 @@ instruction_sto_moins(struct_processus * 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; @@ -1595,7 +1553,7 @@ instruction_sto_moins(struct_processus * 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; @@ -1616,7 +1574,7 @@ instruction_sto_moins(struct_processus * 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; @@ -1642,18 +1600,15 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -1676,7 +1631,7 @@ instruction_sto_moins(struct_processus * } 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; @@ -1920,26 +1875,12 @@ instruction_sto_fois(struct_processus *s if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -1963,12 +1904,10 @@ instruction_sto_fois(struct_processus *s variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -2023,7 +1962,7 @@ instruction_sto_fois(struct_processus *s 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; @@ -2039,7 +1978,7 @@ instruction_sto_fois(struct_processus *s 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; @@ -2060,7 +1999,7 @@ instruction_sto_fois(struct_processus *s 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; @@ -2086,18 +2025,15 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -2120,7 +2056,7 @@ instruction_sto_fois(struct_processus *s } 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; @@ -2207,26 +2143,12 @@ instruction_sto_fois(struct_processus *s if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -2250,12 +2172,10 @@ instruction_sto_fois(struct_processus *s variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -2310,7 +2230,7 @@ instruction_sto_fois(struct_processus *s 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; @@ -2326,7 +2246,7 @@ instruction_sto_fois(struct_processus *s 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; @@ -2347,7 +2267,7 @@ instruction_sto_fois(struct_processus *s 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; @@ -2373,18 +2293,15 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -2407,7 +2324,7 @@ instruction_sto_fois(struct_processus *s } 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; @@ -2651,26 +2568,12 @@ instruction_sto_division(struct_processu if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -2694,12 +2597,10 @@ instruction_sto_division(struct_processu variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -2754,7 +2655,7 @@ instruction_sto_division(struct_processu 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; @@ -2770,7 +2671,7 @@ instruction_sto_division(struct_processu 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; @@ -2791,7 +2692,7 @@ instruction_sto_division(struct_processu 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; @@ -2817,18 +2718,15 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -2851,7 +2749,7 @@ instruction_sto_division(struct_processu } 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; @@ -2938,26 +2836,12 @@ instruction_sto_division(struct_processu if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -2981,12 +2865,10 @@ instruction_sto_division(struct_processu variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -3041,7 +2923,7 @@ instruction_sto_division(struct_processu 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; @@ -3057,7 +2939,7 @@ instruction_sto_division(struct_processu 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; @@ -3078,7 +2960,7 @@ instruction_sto_division(struct_processu 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; @@ -3104,18 +2986,15 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -3138,7 +3017,7 @@ instruction_sto_division(struct_processu } 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; @@ -3343,26 +3222,12 @@ instruction_sneg(struct_processus *s_eta if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -3385,12 +3250,10 @@ instruction_sneg(struct_processus *s_eta variable_partagee = d_vrai; if ((s_objet_2 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -3443,7 +3306,7 @@ instruction_sneg(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; @@ -3463,7 +3326,7 @@ instruction_sneg(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; @@ -3489,18 +3352,15 @@ instruction_sneg(struct_processus *s_eta if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -3523,7 +3383,7 @@ instruction_sneg(struct_processus *s_eta } 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; @@ -3726,26 +3586,12 @@ instruction_sinv(struct_processus *s_eta if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -3768,12 +3614,10 @@ instruction_sinv(struct_processus *s_eta variable_partagee = d_vrai; if ((s_objet_2 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -3826,7 +3670,7 @@ instruction_sinv(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; @@ -3846,7 +3690,7 @@ instruction_sinv(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; @@ -3872,18 +3716,15 @@ instruction_sinv(struct_processus *s_eta if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -3906,7 +3747,7 @@ instruction_sinv(struct_processus *s_eta } 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; @@ -4109,26 +3950,12 @@ instruction_sconj(struct_processus *s_et if ((*(*s_etat_processus).pointeur_variable_courante).objet == 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; @@ -4151,12 +3978,10 @@ instruction_sconj(struct_processus *s_et variable_partagee = d_vrai; if ((s_objet_2 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { 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; @@ -4209,7 +4034,7 @@ instruction_sconj(struct_processus *s_et 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; @@ -4229,7 +4054,7 @@ instruction_sconj(struct_processus *s_et 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; @@ -4255,18 +4080,15 @@ instruction_sconj(struct_processus *s_et if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { 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; @@ -4289,7 +4111,7 @@ instruction_sconj(struct_processus *s_et } 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;