--- rpl/src/instructions_f4.c 2012/12/20 15:32:52 1.41 +++ rpl/src/instructions_f4.c 2019/10/31 15:40:10 1.70 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.12 - Copyright (C) 1989-2012 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.32 + Copyright (C) 1989-2019 Dr. BERTRAND Joël This file is part of RPL/2. @@ -40,8 +40,8 @@ instruction_fleche_table(struct_processu { struct_objet *s_objet; - signed long i; - signed long nombre_elements; + integer8 i; + integer8 nombre_elements; (*s_etat_processus).erreur_execution = d_ex; @@ -116,8 +116,7 @@ instruction_fleche_table(struct_processu return; } - if ((unsigned long) nombre_elements >= - (*s_etat_processus).hauteur_pile_operationnelle) + if (nombre_elements >= (*s_etat_processus).hauteur_pile_operationnelle) { (*s_etat_processus).erreur_execution = d_ex_manque_argument; return; @@ -149,8 +148,8 @@ instruction_fleche_table(struct_processu (*((struct_tableau *) (*s_objet).objet)).nombre_elements = nombre_elements; - if (((*((struct_tableau *) (*s_objet).objet)).elements = malloc( - nombre_elements * sizeof(struct_objet *))) == NULL) + if (((*((struct_tableau *) (*s_objet).objet)).elements = malloc(((size_t) + nombre_elements) * sizeof(struct_objet *))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -194,8 +193,8 @@ instruction_fleche_diag(struct_processus struct_objet *s_objet_argument; struct_objet *s_objet_resultat; - unsigned long i; - unsigned long j; + integer8 i; + integer8 j; (*s_etat_processus).erreur_execution = d_ex; @@ -256,8 +255,9 @@ instruction_fleche_diag(struct_processus (*((struct_vecteur *) (*s_objet_argument).objet)).taille; if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau = - malloc((*((struct_matrice *) (*s_objet_resultat).objet)) - .nombre_lignes * sizeof(integer8 *))) == NULL) + malloc(((size_t) (*((struct_matrice *) + (*s_objet_resultat).objet)).nombre_lignes) + * sizeof(integer8 *))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -268,8 +268,8 @@ instruction_fleche_diag(struct_processus { if ((((integer8 **) (*((struct_matrice *) (*s_objet_resultat).objet)).tableau)[i] = - malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_colonnes * + malloc(((size_t) (*((struct_matrice *) + (*s_objet_resultat).objet)).nombre_colonnes) * sizeof(integer8))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -308,8 +308,8 @@ instruction_fleche_diag(struct_processus (*((struct_vecteur *) (*s_objet_argument).objet)).taille; if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau = - malloc((*((struct_matrice *) (*s_objet_resultat).objet)) - .nombre_lignes * sizeof(real8 *))) == NULL) + malloc(((size_t) (*((struct_matrice *) (*s_objet_resultat) + .objet)).nombre_lignes) * sizeof(real8 *))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -320,8 +320,8 @@ instruction_fleche_diag(struct_processus { if ((((real8 **) (*((struct_matrice *) (*s_objet_resultat).objet)).tableau)[i] = - malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_colonnes * + malloc(((size_t) (*((struct_matrice *) + (*s_objet_resultat).objet)).nombre_colonnes) * sizeof(real8))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -360,8 +360,8 @@ instruction_fleche_diag(struct_processus (*((struct_vecteur *) (*s_objet_argument).objet)).taille; if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau = - malloc((*((struct_matrice *) (*s_objet_resultat).objet)) - .nombre_lignes * sizeof(complex16 *))) == NULL) + malloc(((size_t) (*((struct_matrice *) (*s_objet_resultat) + .objet)).nombre_lignes) * sizeof(complex16 *))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -372,8 +372,8 @@ instruction_fleche_diag(struct_processus { if ((((complex16 **) (*((struct_matrice *) (*s_objet_resultat).objet)).tableau)[i] = - malloc((*((struct_matrice *) - (*s_objet_resultat).objet)).nombre_colonnes * + malloc(((size_t) (*((struct_matrice *) + (*s_objet_resultat).objet)).nombre_colonnes) * sizeof(complex16))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -520,11 +520,6 @@ instruction_forall(struct_processus *s_e return; } - tampon = (*s_etat_processus).instruction_courante; - test_instruction = (*s_etat_processus).test_instruction; - instruction_valide = (*s_etat_processus).instruction_valide; - (*s_etat_processus).test_instruction = 'Y'; - empilement_pile_systeme(s_etat_processus); if ((*s_etat_processus).erreur_systeme != d_es) @@ -534,6 +529,11 @@ instruction_forall(struct_processus *s_e if ((*s_etat_processus).mode_execution_programme == 'Y') { + tampon = (*s_etat_processus).instruction_courante; + test_instruction = (*s_etat_processus).test_instruction; + instruction_valide = (*s_etat_processus).instruction_valide; + (*s_etat_processus).test_instruction = 'Y'; + if (recherche_instruction_suivante(s_etat_processus) == d_erreur) { return; @@ -546,6 +546,8 @@ instruction_forall(struct_processus *s_e liberation(s_etat_processus, s_objet_1); free((*s_etat_processus).instruction_courante); (*s_etat_processus).instruction_courante = tampon; + (*s_etat_processus).instruction_valide = instruction_valide; + (*s_etat_processus).test_instruction = test_instruction; depilement_pile_systeme(s_etat_processus); @@ -553,10 +555,13 @@ instruction_forall(struct_processus *s_e return; } + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); free((*s_etat_processus).instruction_courante); (*s_etat_processus).instruction_courante = tampon; + (*s_etat_processus).instruction_valide = instruction_valide; + (*s_etat_processus).test_instruction = test_instruction; if ((*s_etat_processus).erreur_execution != d_ex) { @@ -651,9 +656,6 @@ instruction_forall(struct_processus *s_e return; } - (*s_etat_processus).test_instruction = test_instruction; - (*s_etat_processus).instruction_valide = instruction_valide; - instruction_cycle(s_etat_processus); return; } @@ -695,9 +697,6 @@ instruction_forall(struct_processus *s_e return; } - (*s_etat_processus).test_instruction = test_instruction; - (*s_etat_processus).instruction_valide = instruction_valide; - instruction_cycle(s_etat_processus); return; } @@ -731,9 +730,6 @@ instruction_forall(struct_processus *s_e liberation(s_etat_processus, s_objet_2); - (*s_etat_processus).test_instruction = test_instruction; - (*s_etat_processus).instruction_valide = instruction_valide; - (*(*s_etat_processus).l_base_pile_systeme).limite_indice_boucle = s_objet_1; if ((*s_etat_processus).mode_execution_programme == 'Y')