Diff for /rpl/src/gestion_variables.c between versions 1.62 and 1.64

version 1.62, 2012/10/07 21:57:48 version 1.64, 2012/12/13 16:59:41
Line 427  ajout_variable(struct_processus *s_etat_ Line 427  ajout_variable(struct_processus *s_etat_
   
         (*(*s_etat_processus).s_arbre_variables).feuille = NULL;          (*(*s_etat_processus).s_arbre_variables).feuille = NULL;
         (*(*s_etat_processus).s_arbre_variables).feuille_statique = NULL;          (*(*s_etat_processus).s_arbre_variables).feuille_statique = NULL;
           (*(*s_etat_processus).s_arbre_variables).feuille_partagee = NULL;
         (*(*s_etat_processus).s_arbre_variables).noeuds_utilises = 0;          (*(*s_etat_processus).s_arbre_variables).noeuds_utilises = 0;
         (*(*s_etat_processus).s_arbre_variables).indice_tableau_pere = -1;          (*(*s_etat_processus).s_arbre_variables).indice_tableau_pere = -1;
         (*(*s_etat_processus).s_arbre_variables).noeud_pere = NULL;          (*(*s_etat_processus).s_arbre_variables).noeud_pere = NULL;
           INITIALISATION_MUTEX((*(*s_etat_processus).s_arbre_variables)
                   .mutex_feuille_partagee);
   
         if (((*(*s_etat_processus).s_arbre_variables).noeuds =          if (((*(*s_etat_processus).s_arbre_variables).noeuds =
                 allocation_tableau_noeuds(s_etat_processus)) == NULL)                  allocation_tableau_noeuds(s_etat_processus)) == NULL)
Line 480  ajout_variable(struct_processus *s_etat_ Line 483  ajout_variable(struct_processus *s_etat_
                     .pointeurs_caracteres_variables[*ptr]]).feuille_statique                      .pointeurs_caracteres_variables[*ptr]]).feuille_statique
                     = NULL;                      = NULL;
             (*(*l_variable_courante).noeuds[(*s_etat_processus)              (*(*l_variable_courante).noeuds[(*s_etat_processus)
                       .pointeurs_caracteres_variables[*ptr]]).feuille_partagee
                       = NULL;
               (*(*l_variable_courante).noeuds[(*s_etat_processus)
                     .pointeurs_caracteres_variables[*ptr]]).noeuds_utilises = 0;                      .pointeurs_caracteres_variables[*ptr]]).noeuds_utilises = 0;
               INITIALISATION_MUTEX((*(*l_variable_courante).noeuds
                       [(*s_etat_processus).pointeurs_caracteres_variables[*ptr]])
                       .mutex_feuille_partagee);
   
             // Le champ noeud_pere de la structure créée pointe sur              // Le champ noeud_pere de la structure créée pointe sur
             // la structure parente et l'indice tableau_pere correspond à la              // la structure parente et l'indice tableau_pere correspond à la
Line 1297  retrait_variable(struct_processus *s_eta Line 1306  retrait_variable(struct_processus *s_eta
                     .feuille = NULL;                      .feuille = NULL;
   
             while(((*s_arbre_courant).noeuds_utilises == 0) &&              while(((*s_arbre_courant).noeuds_utilises == 0) &&
                     ((*s_arbre_courant).feuille_statique == NULL))                      ((*s_arbre_courant).feuille_statique == NULL) &&
                       ((*s_arbre_courant).feuille_partagee == NULL))
             {              {
                 s_arbre_a_supprimer = s_arbre_courant;                  s_arbre_a_supprimer = s_arbre_courant;
                 s_arbre_courant = (*s_arbre_courant).noeud_pere;                  s_arbre_courant = (*s_arbre_courant).noeud_pere;
Line 1958  copie_arbre_variables(struct_processus * Line 1968  copie_arbre_variables(struct_processus *
     struct_liste_variables_statiques    *l_element_statique_courant;      struct_liste_variables_statiques    *l_element_statique_courant;
   
     struct_variable                     s_variable;      struct_variable                     s_variable;
       struct_variable_statique            s_variable_statique;
   
     unsigned char                       *ptr;      unsigned char                       *ptr;
   
Line 2181  copie_arbre_variables(struct_processus * Line 2192  copie_arbre_variables(struct_processus *
             ptr++;              ptr++;
         }          }
   
         if (creation_variable_statique(s_nouvel_etat_processus,          // Il faut copier la variable pour la dissocier de la variable
                 (*l_element_statique_courant).variable) == d_erreur)          // restant dans le thread parent.
   
           s_variable_statique = (*(*l_element_statique_courant).variable);
   
           if (copie_objet(s_etat_processus, s_variable_statique.objet, 'P')
                   == NULL)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return;              return;
         }          }
   
         if (copie_objet(s_etat_processus, (*(*l_element_statique_courant)          if ((s_variable_statique.nom = malloc((strlen(
                 .variable).objet, 'P') == NULL)                  (*(*l_element_statique_courant).variable).nom) + 1) *
                   sizeof(unsigned char))) == NULL)
           {
               (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
               return;
           }
   
           strcpy(s_variable_statique.nom, (*(*l_element_statique_courant)
                   .variable).nom);
   
           if (creation_variable_statique(s_nouvel_etat_processus,
                   &s_variable_statique) == d_erreur)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return;              return;

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


CVSweb interface <joel.bertrand@systella.fr>