Diff for /rpl/src/gestion_objets.c between versions 1.138 and 1.139

version 1.138, 2018/05/30 09:27:32 version 1.139, 2018/12/21 10:56:16
Line 106  initialisation_allocateur(struct_process Line 106  initialisation_allocateur(struct_process
     (*s_etat_processus).pointeur_int = 0;      (*s_etat_processus).pointeur_int = 0;
     (*s_etat_processus).pointeur_mat = 0;      (*s_etat_processus).pointeur_mat = 0;
     (*s_etat_processus).pointeur_nom = 0;      (*s_etat_processus).pointeur_nom = 0;
       (*s_etat_processus).pointeur_rec = 0;
     (*s_etat_processus).pointeur_rel = 0;      (*s_etat_processus).pointeur_rel = 0;
     (*s_etat_processus).pointeur_tab = 0;      (*s_etat_processus).pointeur_tab = 0;
     (*s_etat_processus).pointeur_vec = 0;      (*s_etat_processus).pointeur_vec = 0;
Line 141  liberation_allocateur(struct_processus * Line 142  liberation_allocateur(struct_processus *
             free((*s_etat_processus).objets_mat[i++]));              free((*s_etat_processus).objets_mat[i++]));
     for(i = 0; i < (*s_etat_processus).pointeur_nom;      for(i = 0; i < (*s_etat_processus).pointeur_nom;
             free((*s_etat_processus).objets_nom[i++]));              free((*s_etat_processus).objets_nom[i++]));
       for(i = 0; i < (*s_etat_processus).pointeur_rec;
               free((*s_etat_processus).objets_rec[i++]));
     for(i = 0; i < (*s_etat_processus).pointeur_rel;      for(i = 0; i < (*s_etat_processus).pointeur_rel;
             free((*s_etat_processus).objets_rel[i++]));              free((*s_etat_processus).objets_rel[i++]));
     for(i = 0; i < (*s_etat_processus).pointeur_tab;      for(i = 0; i < (*s_etat_processus).pointeur_tab;
Line 623  allocation(struct_processus *s_etat_proc Line 626  allocation(struct_processus *s_etat_proc
             break;              break;
         }          }
   
           case REC :
           {
               if ((*s_etat_processus).pointeur_rec > 0)
               {
                   (*s_objet).objet = (*s_etat_processus).objets_rec
                           [--(*s_etat_processus).pointeur_rec];
               }
               else
               {
                   if (((*s_objet).objet = malloc(2 * sizeof(struct_objet *)))
                           == NULL)
                   {
                       (*s_etat_processus).erreur_systeme =
                               d_es_allocation_memoire;
                       free(s_objet);
                       return(NULL);
                   }
               }
   
               break;
           }
   
         case REL :          case REL :
         {          {
             if ((*s_etat_processus).pointeur_rel > 0)              if ((*s_etat_processus).pointeur_rel > 0)
Line 1273  liberation(struct_processus *s_etat_proc Line 1298  liberation(struct_processus *s_etat_proc
             break;              break;
         }          }
   
           case REC :
           {
               liberation(s_etat_processus,
                       (*((struct_record *) (*s_objet).objet)).noms);
               liberation(s_etat_processus,
                       (*((struct_record *) (*s_objet).objet)).donnees);
   
               if (decrementation_atomique(s_objet) > 0)
               {
                   return;
               }
   
               if ((*s_etat_processus).pointeur_rec < TAILLE_CACHE)
               {
                   (*s_etat_processus).objets_rec
                           [(*s_etat_processus).pointeur_rec++] = (*s_objet).objet;
               }
               else
               {
                   free((real8 *) ((*s_objet).objet));
               }
   
               break;
           }
   
         case REL :          case REL :
         {          {
             if (decrementation_atomique(s_objet) > 0)              if (decrementation_atomique(s_objet) > 0)

Removed from v.1.138  
changed lines
  Added in v.1.139


CVSweb interface <joel.bertrand@systella.fr>