Diff for /rpl/src/instructions_r7.c between versions 1.38 and 1.39

version 1.38, 2018/05/30 09:27:37 version 1.39, 2018/06/01 09:57:28
Line 112  instruction_restart(struct_processus *s_ Line 112  instruction_restart(struct_processus *s_
 void  void
 instruction_regex(struct_processus *s_etat_processus)  instruction_regex(struct_processus *s_etat_processus)
 {  {
       integer8                        longueur;
   
     regex_t                         expression;      regex_t                         expression;
   
     struct_liste_chainee            *l_element_courant_ecriture;      struct_liste_chainee            *l_element_courant_ecriture;
Line 121  instruction_regex(struct_processus *s_et Line 123  instruction_regex(struct_processus *s_et
     struct_objet                    *s_objet_argument_2;      struct_objet                    *s_objet_argument_2;
     struct_objet                    *s_objet_resultat;      struct_objet                    *s_objet_resultat;
   
       unsigned char                   *exp;
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
   
     if ((*s_etat_processus).affichage_arguments == 'Y')      if ((*s_etat_processus).affichage_arguments == 'Y')
Line 181  instruction_regex(struct_processus *s_et Line 185  instruction_regex(struct_processus *s_et
     {      {
         // Renvoie 0 ou -1          // Renvoie 0 ou -1
   
         if (regcomp(&expression, (const char *) (*s_objet_argument_1).objet,          if ((exp = formateur_flux(s_etat_processus, (*s_objet_argument_1).objet,
                   &longueur)) == NULL)
           {
               (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
               return;
           }
   
           if (regcomp(&expression, (const char *) exp,
                 REG_EXTENDED | REG_NOSUB) != 0)                  REG_EXTENDED | REG_NOSUB) != 0)
         {          {
             liberation(s_etat_processus, s_objet_argument_1);              liberation(s_etat_processus, s_objet_argument_1);
Line 208  instruction_regex(struct_processus *s_et Line 219  instruction_regex(struct_processus *s_et
         }          }
   
         regfree(&expression);          regfree(&expression);
           free(exp);
     }      }
     else if (((*s_objet_argument_1).type == CHN) &&      else if (((*s_objet_argument_1).type == CHN) &&
             ((*s_objet_argument_2).type == LST))              ((*s_objet_argument_2).type == LST))
     {      {
         // Renvoie une liste de chaînes qui correspondent          // Renvoie une liste de chaînes qui correspondent
   
         if (regcomp(&expression, (const char *) (*s_objet_argument_1).objet,          if ((exp = formateur_flux(s_etat_processus, (*s_objet_argument_1).objet,
                   &longueur)) == NULL)
           {
               (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
               return;
           }
   
           if (regcomp(&expression, (const char *) exp,
                 REG_EXTENDED | REG_NOSUB) != 0)                  REG_EXTENDED | REG_NOSUB) != 0)
         {          {
             liberation(s_etat_processus, s_objet_argument_1);              liberation(s_etat_processus, s_objet_argument_1);
Line 306  instruction_regex(struct_processus *s_et Line 325  instruction_regex(struct_processus *s_et
         }          }
   
         regfree(&expression);          regfree(&expression);
           free(exp);
     }      }
     else      else
     {      {

Removed from v.1.38  
changed lines
  Added in v.1.39


CVSweb interface <joel.bertrand@systella.fr>