--- rpl/src/instructions_r3.c 2011/06/24 20:31:40 1.31 +++ rpl/src/instructions_r3.c 2014/04/25 07:37:33 1.57 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.0.prerelease.4 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.18 + Copyright (C) 1989-2014 Dr. BERTRAND Joël This file is part of RPL/2. @@ -353,8 +353,8 @@ instruction_rnrm(struct_processus *s_eta struct_objet *s_objet_argument; struct_objet *s_objet_resultat; - unsigned long i; - unsigned long j; + integer8 i; + integer8 j; void *accumulateur; @@ -410,25 +410,67 @@ instruction_rnrm(struct_processus *s_eta if ((*s_objet_argument).type == VIN) { - if ((s_objet_resultat = allocation(s_etat_processus, INT)) == NULL) + depassement = d_faux; + + for(i = 0; i < (*((struct_vecteur *) (*s_objet_argument).objet)).taille; + i++) { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - return; + if (((integer8 *) (*((struct_vecteur *) (*s_objet_argument) + .objet)).tableau)[i] == INT64_MIN) + { + depassement = d_vrai; + break; + } } - (*((integer8 *) (*s_objet_resultat).objet)) = abs(((integer8 *) - (*((struct_vecteur *) (*s_objet_argument).objet)).tableau)[0]); + if (depassement == d_faux) + { + if ((s_objet_resultat = allocation(s_etat_processus, INT)) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } - for(i = 1; i < (*((struct_vecteur *) (*s_objet_argument).objet)).taille; - i++) + (*((integer8 *) (*s_objet_resultat).objet)) = abs(((integer8 *) + (*((struct_vecteur *) (*s_objet_argument).objet)) + .tableau)[0]); + + for(i = 1; i < (*((struct_vecteur *) (*s_objet_argument).objet)) + .taille; i++) + { + if (abs(((integer8 *) (*((struct_vecteur *) (*s_objet_argument) + .objet)).tableau)[i]) > (*((integer8 *) + (*s_objet_resultat).objet))) + { + (*((integer8 *) (*s_objet_resultat).objet)) = + abs(((integer8 *) (*((struct_vecteur *) + (*s_objet_argument).objet)).tableau)[i]); + } + } + } + else { - if (abs(((integer8 *) (*((struct_vecteur *) (*s_objet_argument) - .objet)).tableau)[i]) > (*((integer8 *) - (*s_objet_resultat).objet))) + if ((s_objet_resultat = allocation(s_etat_processus, REL)) == NULL) { - (*((integer8 *) (*s_objet_resultat).objet)) = - abs(((integer8 *) (*((struct_vecteur *) - (*s_objet_argument).objet)).tableau)[i]); + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } + + (*((real8 *) (*s_objet_resultat).objet)) = abs((real8) ((integer8 *) + (*((struct_vecteur *) (*s_objet_argument).objet)) + .tableau)[0]); + + for(i = 1; i < (*((struct_vecteur *) (*s_objet_argument).objet)) + .taille; i++) + { + if (abs((real8) ((integer8 *) (*((struct_vecteur *) + (*s_objet_argument).objet)).tableau)[i]) > (*((real8 *) + (*s_objet_resultat).objet))) + { + (*((real8 *) (*s_objet_resultat).objet)) = + abs((real8) ((integer8 *) (*((struct_vecteur *) + (*s_objet_argument).objet)).tableau)[i]); + } } } } @@ -501,6 +543,13 @@ instruction_rnrm(struct_processus *s_eta for(j = 0; j < (*((struct_matrice *) (*s_objet_argument).objet)) .nombre_colonnes; j++) { + if (((integer8 **) (*((struct_matrice *) (*s_objet_argument).objet)) + .tableau)[0][j] == INT64_MIN) + { + depassement = d_vrai; + break; + } + entier_courant = abs(((integer8 **) (*((struct_matrice *) (*s_objet_argument).objet)) .tableau)[0][j]); @@ -525,6 +574,14 @@ instruction_rnrm(struct_processus *s_eta for(j = 0; j < (*((struct_matrice *) (*s_objet_argument).objet)) .nombre_colonnes; j++) { + if (((integer8 **) (*((struct_matrice *) + (*s_objet_argument).objet)).tableau)[i][j] + == INT64_MIN) + { + depassement = d_vrai; + break; + } + entier_courant = abs(((integer8 **) (*((struct_matrice *) (*s_objet_argument).objet)).tableau)[i][j]); @@ -565,8 +622,8 @@ instruction_rnrm(struct_processus *s_eta return; } - if ((accumulateur = malloc((*((struct_matrice *) - (*s_objet_argument).objet)).nombre_colonnes * + if ((accumulateur = malloc(((size_t) (*((struct_matrice *) + (*s_objet_argument).objet)).nombre_colonnes) * sizeof(real8))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -614,8 +671,8 @@ instruction_rnrm(struct_processus *s_eta return; } - if ((accumulateur = malloc((*((struct_matrice *) - (*s_objet_argument).objet)).nombre_colonnes * sizeof(real8))) + if ((accumulateur = malloc(((size_t) (*((struct_matrice *) + (*s_objet_argument).objet)).nombre_colonnes) * sizeof(real8))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -661,8 +718,8 @@ instruction_rnrm(struct_processus *s_eta return; } - if ((accumulateur = malloc((*((struct_matrice *) - (*s_objet_argument).objet)).nombre_colonnes * sizeof(real8))) + if ((accumulateur = malloc(((size_t) (*((struct_matrice *) + (*s_objet_argument).objet)).nombre_colonnes) * sizeof(real8))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -967,7 +1024,7 @@ instruction_recall(struct_processus *s_e unsigned char *tampon_definitions_chainees; unsigned char *tampon_instruction_courante; - unsigned long position_courante; + integer8 position_courante; (*s_etat_processus).erreur_execution = d_ex; @@ -1063,15 +1120,8 @@ instruction_recall(struct_processus *s_e return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rpliconv_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rpliconv_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rpliconv") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -1086,15 +1136,8 @@ instruction_recall(struct_processus *s_e return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rplfile_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rplfile_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rplfile") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -1109,15 +1152,8 @@ instruction_recall(struct_processus *s_e return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rplpp_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rplpp_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rplpp") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -1132,15 +1168,8 @@ instruction_recall(struct_processus *s_e return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rplawk_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rplawk_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rplawk") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -1175,15 +1204,8 @@ instruction_recall(struct_processus *s_e return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rpliconv_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rpliconv_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rpliconv") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -1198,15 +1220,8 @@ instruction_recall(struct_processus *s_e return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rplfile_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rplfile_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rplfile") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -1221,15 +1236,8 @@ instruction_recall(struct_processus *s_e return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rplpp_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rplpp_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rplpp") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -1244,15 +1252,8 @@ instruction_recall(struct_processus *s_e return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rplawk_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rplawk_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rplawk") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -1318,7 +1319,7 @@ instruction_recall(struct_processus *s_e return; } - if ((chaine = malloc((nombre_caracteres_source + 1) + if ((chaine = malloc((((size_t) nombre_caracteres_source) + 1) * sizeof(unsigned char))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -1359,7 +1360,7 @@ instruction_recall(struct_processus *s_e } } - if ((chaine[i] = caractere) == '\"') + if ((chaine[i] = (unsigned char) caractere) == '\"') { if (i > 0) { @@ -1586,9 +1587,9 @@ instruction_rcws(struct_processus *s_eta { struct_objet *s_objet_resultat; - unsigned long i; - unsigned long j; - unsigned long longueur; + integer8 i; + integer8 j; + integer8 longueur; (*s_etat_processus).erreur_execution = d_ex;