--- rpl/src/instructions_m4.c 2012/10/01 11:05:05 1.45 +++ rpl/src/instructions_m4.c 2013/03/20 22:24:36 1.54 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.11 - Copyright (C) 1989-2012 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.13 + Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -38,8 +38,8 @@ void instruction_mem(struct_processus *s_etat_processus) { - int j; - int nb_variables; + integer8 j; + integer8 nb_variables; struct_liste_chainee *l_element_courant; @@ -47,8 +47,6 @@ instruction_mem(struct_processus *s_etat struct_tableau_variables *tableau; - unsigned long i; - (*s_etat_processus).erreur_execution = d_ex; if ((*s_etat_processus).affichage_arguments == 'Y') @@ -144,24 +142,24 @@ instruction_mem(struct_processus *s_etat (*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat).objet)).suivant)).donnee)).objet)) = 0; - nb_variables = nombre_variables(s_etat_processus, - (*s_etat_processus).s_arbre_variables); + nb_variables = nombre_variables(s_etat_processus); - if ((tableau = malloc(nb_variables * sizeof(struct_tableau_variables))) - == NULL) + if ((tableau = malloc(((size_t) nb_variables) * + sizeof(struct_tableau_variables))) == NULL) { + liberation_mutexes_arbre_variables_partagees(s_etat_processus, + (*(*s_etat_processus).s_arbre_variables_partagees)); (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; } - liste_variables(s_etat_processus, tableau, 0, - (*s_etat_processus).s_arbre_variables); + liste_variables(s_etat_processus, tableau); for(j = 0; j < nb_variables; j++) { (*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat) - .objet)).suivant)).donnee)).objet)) += sizeof(unsigned char) * - strlen(tableau[j].nom); + .objet)).suivant)).donnee)).objet)) += (integer8) + (sizeof(unsigned char) * strlen(tableau[j].nom)); (*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat) .objet)).suivant)).donnee)).objet)) += occupation_memoire( tableau[j].objet); @@ -169,38 +167,6 @@ instruction_mem(struct_processus *s_etat free(tableau); - for(i = 0; i < (*s_etat_processus).nombre_variables_statiques; i++) - { - // Comptabilisation des empreintes mémoire des variables - // statiques qui ne sont pas accessibles, les variables statiques - // accessibles étant déjà comptabilitées par la boucle précédente. - - if ((*s_etat_processus).s_liste_variables_statiques[i].objet != NULL) - { - (*((integer8 *) (*((*((*((struct_liste_chainee *) - (*s_objet_resultat).objet)).suivant)).donnee)).objet)) += - sizeof(unsigned char) * strlen((*s_etat_processus) - .s_liste_variables_statiques[i].nom); - (*((integer8 *) (*((*((*((struct_liste_chainee *) - (*s_objet_resultat).objet)).suivant)).donnee)).objet)) += - occupation_memoire((*s_etat_processus) - .s_liste_variables_statiques[i].objet); - } - } - - for(i = 0; i < (*(*s_etat_processus).s_liste_variables_partagees) - .nombre_variables; i++) - { - (*((integer8 *) (*((*((*((struct_liste_chainee *) - (*s_objet_resultat).objet)).suivant)).donnee)).objet)) += - sizeof(unsigned char) * strlen((*(*s_etat_processus) - .s_liste_variables_partagees).table[i].nom); - (*((integer8 *) (*((*((*((struct_liste_chainee *) - (*s_objet_resultat).objet)).suivant)).donnee)).objet)) += - occupation_memoire((*(*s_etat_processus) - .s_liste_variables_partagees).table[i].objet); - } - /* * Empilement du résultat */