--- rpl/src/instructions_f3.c 2010/01/26 15:22:44 1.1 +++ rpl/src/instructions_f3.c 2010/07/14 14:19:36 1.15 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.9 + RPL/2 (R) version 4.0.18 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -551,21 +551,51 @@ instruction_fleche_q(struct_processus *s } } while(z > epsilon); - if ((s_objet_argument_1 = allocation(s_etat_processus, REL)) == NULL) + if (r2 != ((real8) ((integer8) r2))) { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - return; + if ((s_objet_argument_1 = allocation(s_etat_processus, REL)) + == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } + + (*((real8 *) (*s_objet_argument_1).objet)) = r2; } + else + { + if ((s_objet_argument_1 = allocation(s_etat_processus, INT)) + == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } - (*((real8 *) (*s_objet_argument_1).objet)) = r2; + (*((integer8 *) (*s_objet_argument_1).objet)) = (integer8) r2; + } - if ((s_objet_argument_2 = allocation(s_etat_processus, REL)) == NULL) + if (r1 != ((real8) ((integer8) r1))) { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - return; + if ((s_objet_argument_2 = allocation(s_etat_processus, REL)) + == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } + + (*((real8 *) (*s_objet_argument_2).objet)) = r1; } + else + { + if ((s_objet_argument_2 = allocation(s_etat_processus, INT)) + == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } - (*((real8 *) (*s_objet_argument_2).objet)) = r1; + (*((integer8 *) (*s_objet_argument_2).objet)) = (integer8) r1; + } if ((s_objet_resultat = allocation(s_etat_processus, ALG)) == NULL) { @@ -1783,7 +1813,7 @@ instruction_fuse(struct_processus *s_eta (*s_etat_processus).erreur_systeme = d_es_processus; return; } - + if (pthread_attr_destroy(&attributs) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus;