Diff for /rpl/src/instructions_s1.c between versions 1.65 and 1.90

version 1.65, 2013/03/21 11:30:30 version 1.90, 2018/05/30 09:27:37
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.13    RPL/2 (R) version 4.1.29
   Copyright (C) 1989-2013 Dr. BERTRAND Joël    Copyright (C) 1989-2018 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 3690  instruction_syseval(struct_processus *s_ Line 3690  instruction_syseval(struct_processus *s_
   
         verrouillage_threads_concurrents(s_etat_processus);          verrouillage_threads_concurrents(s_etat_processus);
         pid = fork();          pid = fork();
         deverrouillage_threads_concurrents(s_etat_processus);  
   
         if (pid < 0)          if (pid < 0)
         {          {
Line 3735  instruction_syseval(struct_processus *s_ Line 3734  instruction_syseval(struct_processus *s_
         }          }
         else if (pid == 0)          else if (pid == 0)
         {          {
               (*s_etat_processus).erreur_systeme = d_es;
   
             if (close(pipes_entree[1]) != 0)              if (close(pipes_entree[1]) != 0)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_processus;                  (*s_etat_processus).erreur_systeme = d_es_processus;
Line 3820  instruction_syseval(struct_processus *s_ Line 3821  instruction_syseval(struct_processus *s_
         }          }
         else          else
         {          {
               deverrouillage_threads_concurrents(s_etat_processus);
   
             if (close(pipes_entree[0]) != 0)              if (close(pipes_entree[0]) != 0)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_processus;                  (*s_etat_processus).erreur_systeme = d_es_processus;
Line 3985  instruction_syseval(struct_processus *s_ Line 3988  instruction_syseval(struct_processus *s_
                     return;                      return;
                 }                  }
   
                 if (waitpid(pid, &status, 0) == -1)                  while(waitpid(pid, &status, 0) == -1)
                 {                  {
 #                   ifndef SEMAPHORES_NOMMES                      if (errno != EINTR)
                         if (sem_post(&((*s_etat_processus).semaphore_fork))  
                                 != 0)  
 #                   else  
                         if (sem_post((*s_etat_processus).semaphore_fork) != 0)  
 #                   endif  
                     {                      {
   #                       ifndef SEMAPHORES_NOMMES
                               if (sem_post(&((*s_etat_processus).semaphore_fork))
                                       != 0)
   #                       else
                               if (sem_post((*s_etat_processus).semaphore_fork)
                                       != 0)
   #                       endif
                           {
                               (*s_etat_processus).erreur_systeme = d_es_processus;
                               return;
                           }
   
                         (*s_etat_processus).erreur_systeme = d_es_processus;                          (*s_etat_processus).erreur_systeme = d_es_processus;
                         return;                          return;
                     }                      }
   
                     (*s_etat_processus).erreur_systeme = d_es_processus;  
                     return;  
                 }                  }
   
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
Line 4109  instruction_syseval(struct_processus *s_ Line 4116  instruction_syseval(struct_processus *s_
             longueur_tampon = (integer8) strlen(tampon);              longueur_tampon = (integer8) strlen(tampon);
   
             for(i = 0, ptr = tampon, nombre_lignes = 0;              for(i = 0, ptr = tampon, nombre_lignes = 0;
                     i < (long) longueur_tampon; i++, ptr++)                      i < longueur_tampon; i++, ptr++)
             {              {
                 if ((*ptr) == d_code_retour_chariot)                  if ((*ptr) == d_code_retour_chariot)
                 {                  {
Line 4143  instruction_syseval(struct_processus *s_ Line 4150  instruction_syseval(struct_processus *s_
                 l_element_courant = (struct_liste_chainee *)                  l_element_courant = (struct_liste_chainee *)
                         (*s_objet_resultat).objet;                          (*s_objet_resultat).objet;
   
                 for(i = 0, ptr = tampon; i < (long) nombre_lignes; i++)                  for(i = 0, ptr = tampon; i < nombre_lignes; i++)
                 {                  {
                     if (((*l_element_courant).donnee =                      if (((*l_element_courant).donnee =
                             allocation(s_etat_processus, CHN)) == NULL)                              allocation(s_etat_processus, CHN)) == NULL)

Removed from v.1.65  
changed lines
  Added in v.1.90


CVSweb interface <joel.bertrand@systella.fr>