Diff for /rpl/src/gestion_variables.c between versions 1.72 and 1.81

version 1.72, 2013/03/23 16:14:39 version 1.81, 2013/12/03 09:36:11
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.13    RPL/2 (R) version 4.1.17
   Copyright (C) 1989-2013 Dr. BERTRAND Joël    Copyright (C) 1989-2013 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 1531  retrait_variables_par_niveau(struct_proc Line 1531  retrait_variables_par_niveau(struct_proc
                 break;                  break;
             }              }
   
               if (((*s_etat_processus).at_exit != NULL) &&
                       ((*s_etat_processus).niveau_courant == 0))
               {
                   // Il y a une routine ATEXIT enregistrée. On ne détruit pas
                   // les variables globales qui pourraient y être utilisées.
   
                   break;
               }
   
             while((*(*s_etat_processus).l_liste_variables_par_niveau).liste              while((*(*s_etat_processus).l_liste_variables_par_niveau).liste
                     != NULL)                      != NULL)
             {              {
Line 1863  nombre_variables_partagees(struct_proces Line 1872  nombre_variables_partagees(struct_proces
         return(0);          return(0);
     }      }
   
       // Mutex deverrouillé par liste_variables_partagees();
     if (pthread_mutex_lock(&((*l_element_courant).mutex_feuille)) != 0)      if (pthread_mutex_lock(&((*l_element_courant).mutex_feuille)) != 0)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_processus;          (*s_etat_processus).erreur_systeme = d_es_processus;
Line 2035  liste_variables_partagees(struct_process Line 2045  liste_variables_partagees(struct_process
         return(position);          return(position);
     }      }
   
     // mutex_liste_variables_partagees  
     // et (*l_variable_courante).mutex_feuille  
     if ((*l_element_courant).feuille != NULL)      if ((*l_element_courant).feuille != NULL)
     {      {
         l_variable = (*l_element_courant).feuille;          l_variable = (*l_element_courant).feuille;
Line 2050  liste_variables_partagees(struct_process Line 2058  liste_variables_partagees(struct_process
             tableau[position].variable_verrouillee = d_faux;              tableau[position].variable_verrouillee = d_faux;
             tableau[position].variable_partagee =              tableau[position].variable_partagee =
                     (*(*l_variable).variable).variable_partagee;                      (*(*l_variable).variable).variable_partagee;
             tableau[position].variable_partagee.pointeur = NULL;              tableau[position].variable_statique.pointeur = NULL;
             tableau[position].variable_masquee = d_faux;              tableau[position].variable_masquee = d_faux;
             tableau[position].mutex = &((*(*l_variable).variable).mutex);              tableau[position].mutex = &((*(*l_variable).variable).mutex);
               pthread_mutex_lock(tableau[position].mutex);
   
             position++;              position++;
   
Line 2069  liste_variables_partagees(struct_process Line 2078  liste_variables_partagees(struct_process
         }          }
     }      }
   
       // Mutex verrouillé par nombre_variables_partagees();
     if (pthread_mutex_unlock(&((*l_element_courant).mutex_feuille)) != 0)      if (pthread_mutex_unlock(&((*l_element_courant).mutex_feuille)) != 0)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_processus;          (*s_etat_processus).erreur_systeme = d_es_processus;

Removed from v.1.72  
changed lines
  Added in v.1.81


CVSweb interface <joel.bertrand@systella.fr>