Diff for /rpl/src/types.c between versions 1.42 and 1.43

version 1.42, 2011/11/26 10:01:33 version 1.43, 2011/12/02 11:17:59
Line 3522  recherche_type(struct_processus *s_etat_ Line 3522  recherche_type(struct_processus *s_etat_
                 }                  }
                 else                  else
                 {                  {
                     (*s_objet).type = INT;                      // Le format ressemble à un entier mais il peut y avoir
                       // un dépassement de capacité lors de la conversion.
                       // On convertit donc en entier et en réel. Si les
                       // deux conversions donnent le même résultat, on
                       // considère que la conversion en entier est bonne. Dans
                       // le cas contraire, on garde la conversion en réel.
   
                     element = (void *) ((integer8 *) malloc(                      integer8                    conversion_entiere;
                             sizeof(integer8)));                      real8                       conversion_reelle;
   
                     if (element == NULL)                      if (sscanf((*s_etat_processus).instruction_courante, "%lg",
                               &conversion_reelle) != 1)
                     {                      {
                         (*s_etat_processus).erreur_systeme =                          (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                                 d_es_allocation_memoire;  
                         (*s_etat_processus).traitement_interruptible =  
                                 registre_interruption;  
                         return;  
                     }                      }
   
                     nombre_elements_convertis = sscanf(                      if (sscanf((*s_etat_processus).instruction_courante, "%lld",
                             (*s_etat_processus).instruction_courante, "%lld",                              &conversion_entiere) != 1)
                             (integer8 *) element);  
   
                     if (nombre_elements_convertis != 1)  
                     {                      {
                         (*s_etat_processus).erreur_execution = d_ex_syntaxe;                          (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                     }                      }
   
                       if (abs(nextafter(conversion_reelle, conversion_entiere)
                               - conversion_reelle) >= abs(conversion_reelle
                               - conversion_entiere))
                       {
                           (*s_objet).type = INT;
   
                           element = malloc(sizeof(integer8));
   
                           if (element == NULL)
                           {
                               (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                               (*s_etat_processus).traitement_interruptible =
                                       registre_interruption;
                               return;
                           }
   
                           (*((integer8 *) element)) = conversion_entiere;
                       }
                       else
                       {
                           (*s_objet).type = REL;
   
                           element = malloc(sizeof(real8));
   
                           if (element == NULL)
                           {
                               (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                               (*s_etat_processus).traitement_interruptible =
                                       registre_interruption;
                               return;
                           }
   
                           (*((real8 *) element)) = conversion_reelle;
                       }
                 }                  }
             }              }
   

Removed from v.1.42  
changed lines
  Added in v.1.43


CVSweb interface <joel.bertrand@systella.fr>