--- rpl/src/instructions_s3.c 2010/01/27 22:22:15 1.2 +++ rpl/src/instructions_s3.c 2012/10/01 11:05:06 1.38 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.10 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.11 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -47,6 +47,9 @@ instruction_sub(struct_processus *s_etat struct_objet *s_objet_argument_3; struct_objet *s_objet_resultat; + unsigned char *ptr1; + unsigned char *ptr2; + unsigned long 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(((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, + ptr2 - ptr1)[ptr2 - ptr1] = d_code_fin_chaine; } /* @@ -436,8 +465,8 @@ instruction_sto_plus(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -456,8 +485,7 @@ instruction_sto_plus(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -467,12 +495,10 @@ instruction_sto_plus(struct_processus *s } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -536,8 +562,7 @@ instruction_sto_plus(struct_processus *s else { if ((s_objet_3 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -671,12 +696,11 @@ instruction_sto_plus(struct_processus *s else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -728,8 +752,8 @@ instruction_sto_plus(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -748,8 +772,7 @@ instruction_sto_plus(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -759,12 +782,10 @@ instruction_sto_plus(struct_processus *s } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -828,8 +849,7 @@ instruction_sto_plus(struct_processus *s else { if ((s_objet_3 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -963,12 +983,11 @@ instruction_sto_plus(struct_processus *s else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -1177,8 +1196,8 @@ instruction_sto_moins(struct_processus * return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -1197,8 +1216,7 @@ instruction_sto_moins(struct_processus * return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -1208,12 +1226,10 @@ instruction_sto_moins(struct_processus * } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -1277,8 +1293,7 @@ instruction_sto_moins(struct_processus * else { if ((s_objet_3 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -1412,12 +1427,11 @@ instruction_sto_moins(struct_processus * else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante) + .objet)) == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -1469,8 +1483,8 @@ instruction_sto_moins(struct_processus * return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -1489,8 +1503,7 @@ instruction_sto_moins(struct_processus * return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -1500,12 +1513,10 @@ instruction_sto_moins(struct_processus * } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -1569,8 +1580,7 @@ instruction_sto_moins(struct_processus * else { if ((s_objet_3 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -1704,12 +1714,11 @@ instruction_sto_moins(struct_processus * else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante) + .objet)) == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -1918,8 +1927,8 @@ instruction_sto_fois(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -1938,8 +1947,7 @@ instruction_sto_fois(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -1949,12 +1957,10 @@ instruction_sto_fois(struct_processus *s } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -2018,8 +2024,7 @@ instruction_sto_fois(struct_processus *s else { if ((s_objet_3 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2153,12 +2158,11 @@ instruction_sto_fois(struct_processus *s else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -2210,8 +2214,8 @@ instruction_sto_fois(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -2230,8 +2234,7 @@ instruction_sto_fois(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -2241,12 +2244,10 @@ instruction_sto_fois(struct_processus *s } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -2310,8 +2311,7 @@ instruction_sto_fois(struct_processus *s else { if ((s_objet_3 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2445,12 +2445,11 @@ instruction_sto_fois(struct_processus *s else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -2659,8 +2658,8 @@ instruction_sto_division(struct_processu return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -2679,8 +2678,7 @@ instruction_sto_division(struct_processu return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -2690,12 +2688,10 @@ instruction_sto_division(struct_processu } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -2759,8 +2755,7 @@ instruction_sto_division(struct_processu else { if ((s_objet_3 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2894,12 +2889,11 @@ instruction_sto_division(struct_processu else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -2951,8 +2945,8 @@ instruction_sto_division(struct_processu return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -2971,8 +2965,7 @@ instruction_sto_division(struct_processu return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -2982,12 +2975,10 @@ instruction_sto_division(struct_processu } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -3051,8 +3042,7 @@ instruction_sto_division(struct_processu else { if ((s_objet_3 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -3186,12 +3176,11 @@ instruction_sto_division(struct_processu else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -3362,8 +3351,8 @@ instruction_sneg(struct_processus *s_eta return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); @@ -3381,8 +3370,7 @@ instruction_sneg(struct_processus *s_eta return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -3392,12 +3380,10 @@ instruction_sneg(struct_processus *s_eta } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -3459,8 +3445,7 @@ instruction_sneg(struct_processus *s_eta else { if ((s_objet_2 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -3576,12 +3561,11 @@ instruction_sneg(struct_processus *s_eta else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -3750,8 +3734,8 @@ instruction_sinv(struct_processus *s_eta return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); @@ -3769,8 +3753,7 @@ instruction_sinv(struct_processus *s_eta return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -3780,12 +3763,10 @@ instruction_sinv(struct_processus *s_eta } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -3847,8 +3828,7 @@ instruction_sinv(struct_processus *s_eta else { if ((s_objet_2 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -3964,12 +3944,11 @@ instruction_sinv(struct_processus *s_eta else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -4138,8 +4117,8 @@ instruction_sconj(struct_processus *s_et return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); @@ -4157,8 +4136,7 @@ instruction_sconj(struct_processus *s_et return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -4168,12 +4146,10 @@ instruction_sconj(struct_processus *s_et } 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) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -4235,8 +4211,7 @@ instruction_sconj(struct_processus *s_et else { if ((s_objet_2 = copie_objet(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet, + (*(*s_etat_processus).pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -4352,12 +4327,11 @@ instruction_sconj(struct_processus *s_et else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1);