Diff for /rpl/src/compilation.c between versions 1.89 and 1.90

version 1.89, 2017/06/29 12:33:34 version 1.90, 2017/06/29 14:54:42
Line 919  recherche_instruction_suivante_recursive Line 919  recherche_instruction_suivante_recursive
   
     integer8                    nombre_caracteres;      integer8                    nombre_caracteres;
     integer8                    (*__type_parse)(struct_processus      integer8                    (*__type_parse)(struct_processus
                                         *s_etat_processus);                                          *s_etat_processus, void **arg);
   
   
     unsigned char               base_binaire;      unsigned char               base_binaire;
Line 937  recherche_instruction_suivante_recursive Line 937  recherche_instruction_suivante_recursive
     erreur_format = d_ex;      erreur_format = d_ex;
     erreur = d_absence_erreur;      erreur = d_absence_erreur;
   
     /*  
      * On regarde s'il existe des fonctions permettant de parser  
      * les objets dans les bibliothèques externes.  
      */  
   
     l_element_courant = (*s_etat_processus).s_bibliotheques;  
   
     while(l_element_courant != NULL)  
     {  
         if ((__type_parse = dlsym((*((struct_bibliotheque *)  
                 (*l_element_courant).donnee)).descripteur, "__type_parse"))  
                 != NULL)  
         {  
             // Une fonction declareTypeExtension(parse) se trouve dans la  
             // bibliothèque. Si cette fonction renvoie une valeur non nulle,  
             // elle a réussi à parser correctement un objet.  
   
             if ((nombre_caracteres = __type_parse(s_etat_processus)) != 0)  
             {  
                 if (((*s_etat_processus).instruction_courante =  
                         malloc((((unsigned) nombre_caracteres) + 1)  
                         * sizeof(unsigned char))) == NULL)  
                 {  
                     (*s_etat_processus).erreur_systeme =  
                             d_es_allocation_memoire;  
                     return(d_erreur);  
                 }  
   
                 strncpy((*s_etat_processus).instruction_courante,  
                         (*s_etat_processus).instruction_courante +  
                         (*s_etat_processus).position_courante,  
                         (unsigned) nombre_caracteres);  
                 (*s_etat_processus).instruction_courante[nombre_caracteres]  
                         = d_code_fin_chaine;  
   
                 (*s_etat_processus).position_courante += nombre_caracteres;  
                 return(erreur);  
             }  
         }  
   
         l_element_courant = (*l_element_courant).suivant;  
     }  
   
     /*  
      * Gestion des types intrinsèques  
      */  
   
     switch((*s_etat_processus).type_en_cours)      switch((*s_etat_processus).type_en_cours)
     {      {
         case RPN:          case RPN:
Line 1044  recherche_instruction_suivante_recursive Line 997  recherche_instruction_suivante_recursive
         return(erreur);          return(erreur);
     }      }
   
       /*
        * On regarde s'il existe des fonctions permettant de parser
        * les objets dans les bibliothèques externes.
        */
   
       l_element_courant = (*s_etat_processus).s_bibliotheques;
       (*s_etat_processus).position_courante = pointeur_caractere_courant
               - (*s_etat_processus).definitions_chainees;
   
       while(l_element_courant != NULL)
       {
           if ((__type_parse = dlsym((*((struct_bibliotheque *)
                   (*l_element_courant).donnee)).descripteur, "__type_parse"))
                   != NULL)
           {
               // Une fonction declareTypeExtension(parse) se trouve dans la
               // bibliothèque. Si cette fonction renvoie une valeur non nulle,
               // elle a réussi à parser correctement un objet.
   
               if ((nombre_caracteres = __type_parse(s_etat_processus, NULL)) != 0)
               {
                   if (((*s_etat_processus).instruction_courante =
                           malloc((((unsigned) nombre_caracteres) + 1)
                           * sizeof(unsigned char))) == NULL)
                   {
                       (*s_etat_processus).erreur_systeme =
                               d_es_allocation_memoire;
                       return(d_erreur);
                   }
   
                   strncpy((*s_etat_processus).instruction_courante,
                           (*s_etat_processus).definitions_chainees +
                           (*s_etat_processus).position_courante,
                           (unsigned) nombre_caracteres);
                   (*s_etat_processus).instruction_courante[nombre_caracteres]
                           = d_code_fin_chaine;
   
                   (*s_etat_processus).position_courante += nombre_caracteres;
                   return(erreur);
               }
           }
   
           l_element_courant = (*l_element_courant).suivant;
       }
   
     pointeur_debut_instruction = pointeur_caractere_courant;      pointeur_debut_instruction = pointeur_caractere_courant;
   
     while(((*pointeur_caractere_courant) != d_code_espace) &&      while(((*pointeur_caractere_courant) != d_code_espace) &&

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


CVSweb interface <joel.bertrand@systella.fr>