--- rpl/src/instructions_f3.c 2010/01/27 22:22:13 1.2 +++ rpl/src/instructions_f3.c 2010/04/07 13:45:06 1.7 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.10 + RPL/2 (R) version 4.0.14 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) {