Diff for /rpl/src/instructions_m4.c between versions 1.52 and 1.64

version 1.52, 2013/02/26 19:56:15 version 1.64, 2015/01/05 13:12:37
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.12    RPL/2 (R) version 4.1.19
   Copyright (C) 1989-2013 Dr. BERTRAND Joël    Copyright (C) 1989-2015 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 38 Line 38
 void  void
 instruction_mem(struct_processus *s_etat_processus)  instruction_mem(struct_processus *s_etat_processus)
 {  {
     int                         j;      integer8                    j;
     int                         nb_variables;      integer8                    nb_variables;
   
     struct_liste_chainee        *l_element_courant;      struct_liste_chainee        *l_element_courant;
   
Line 144  instruction_mem(struct_processus *s_etat Line 144  instruction_mem(struct_processus *s_etat
   
     nb_variables = nombre_variables(s_etat_processus);      nb_variables = nombre_variables(s_etat_processus);
   
     if ((tableau = malloc(nb_variables * sizeof(struct_tableau_variables)))      if ((tableau = malloc(((size_t) nb_variables) *
             == NULL)              sizeof(struct_tableau_variables))) == NULL)
     {      {
         liberation_mutexes_arbre_variables_partagees(s_etat_processus,          liberation_mutexes_arbre_variables_partagees(s_etat_processus,
                 (*(*s_etat_processus).s_arbre_variables_partagees));                  (*(*s_etat_processus).s_arbre_variables_partagees));
Line 153  instruction_mem(struct_processus *s_etat Line 153  instruction_mem(struct_processus *s_etat
         return;          return;
     }      }
   
     liste_variables(s_etat_processus, tableau);      nb_variables = liste_variables(s_etat_processus, tableau);
   
     for(j = 0; j < nb_variables; j++)      for(j = 0; j < nb_variables; j++)
     {      {
         (*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat)          (*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat)
                 .objet)).suivant)).donnee)).objet)) += sizeof(unsigned char) *                  .objet)).suivant)).donnee)).objet)) += (integer8)
                 strlen(tableau[j].nom);                  (sizeof(unsigned char) * strlen(tableau[j].nom));
         (*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat)          (*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat)
                 .objet)).suivant)).donnee)).objet)) += occupation_memoire(                  .objet)).suivant)).donnee)).objet)) += occupation_memoire(
                 tableau[j].objet);                  tableau[j].objet);
   
           if(tableau[j].mutex != NULL)
           {   // La variable est une variable partagée. On libère le mutex.
               pthread_mutex_unlock(tableau[j].mutex);
           }
     }      }
   
     free(tableau);      free(tableau);
Line 891  instruction_mtxunlock(struct_processus * Line 896  instruction_mtxunlock(struct_processus *
         {          {
             liberation(s_etat_processus, s_objet_argument);              liberation(s_etat_processus, s_objet_argument);
   
               (*s_etat_processus).erreur_systeme = d_es_processus;
               return;
           }
   
           if (pthread_mutex_unlock(&((*((struct_mutex *)
                   (*s_objet_argument).objet)).mutex)) != 0)
           {
               liberation(s_etat_processus, s_objet_argument);
   
             (*s_etat_processus).erreur_systeme = d_es_processus;              (*s_etat_processus).erreur_systeme = d_es_processus;
             return;              return;
         }          }

Removed from v.1.52  
changed lines
  Added in v.1.64


CVSweb interface <joel.bertrand@systella.fr>