--- rpl/src/types.c 2014/07/24 14:38:44 1.67 +++ rpl/src/types.c 2015/12/13 22:55:24 1.79 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.19 - Copyright (C) 1989-2014 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.24 + Copyright (C) 1989-2015 Dr. BERTRAND Joël This file is part of RPL/2. @@ -38,8 +38,6 @@ void recherche_type(struct_processus *s_etat_processus) { - enum t_type registre_type; - integer8 i; integer8 j; integer8 niveau; @@ -145,8 +143,8 @@ recherche_type(struct_processus *s_etat_ */ if (((*((struct_fonction *) element)).nom_fonction = - conversion_majuscule((*s_etat_processus) - .instruction_courante)) == NULL) + conversion_majuscule(s_etat_processus, + (*s_etat_processus).instruction_courante)) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -193,7 +191,7 @@ recherche_type(struct_processus *s_etat_ } else { - if ((instruction_majuscule = conversion_majuscule( + if ((instruction_majuscule = conversion_majuscule(s_etat_processus, (*s_etat_processus).instruction_courante)) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -276,6 +274,7 @@ recherche_type(struct_processus *s_etat_ element = (void *) ((struct_complexe16 *) malloc( sizeof(struct_complexe16))); + if (element == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; (*s_etat_processus).traitement_interruptible = @@ -1084,21 +1083,6 @@ recherche_type(struct_processus *s_etat_ case d_faux : { - registre_type = (*s_etat_processus).type_en_cours; - - if (drapeau_complexe == d_vrai) - { - (*s_etat_processus).type_en_cours = VCX; - } - else if (drapeau_reel == d_vrai) - { - (*s_etat_processus).type_en_cours = VRL; - } - else - { - (*s_etat_processus).type_en_cours = VIN; - } - /* -- Sauvegarde des paramètres du processus pour analyser le vecteur ------------- @@ -1507,7 +1491,6 @@ recherche_type(struct_processus *s_etat_ (*s_objet).type = VIN; } - (*s_etat_processus).type_en_cours = registre_type; break; } @@ -1519,21 +1502,6 @@ recherche_type(struct_processus *s_etat_ case d_vrai : { - registre_type = (*s_etat_processus).type_en_cours; - - if (drapeau_complexe == d_vrai) - { - (*s_etat_processus).type_en_cours = MCX; - } - else if (drapeau_reel == d_vrai) - { - (*s_etat_processus).type_en_cours = MRL; - } - else - { - (*s_etat_processus).type_en_cours = MIN; - } - nombre_lignes--; sauvegarde_longueur_definitions_chainees = @@ -2153,7 +2121,6 @@ recherche_type(struct_processus *s_etat_ fflush(stdout); } - (*s_etat_processus).type_en_cours = registre_type; break; } } @@ -2169,9 +2136,6 @@ recherche_type(struct_processus *s_etat_ case '{' : { - registre_type = (*s_etat_processus).type_en_cours; - (*s_etat_processus).type_en_cours = LST; - sauvegarde_longueur_definitions_chainees = (*s_etat_processus).longueur_definitions_chainees; @@ -2553,7 +2517,6 @@ recherche_type(struct_processus *s_etat_ (*s_objet).type = LST; element = (void *) l_element_courant; - (*s_etat_processus).type_en_cours = registre_type; break; } @@ -2703,7 +2666,8 @@ recherche_type(struct_processus *s_etat_ * elle est convertie en majuscules. */ - tampon = conversion_majuscule((*((struct_fonction *) + tampon = conversion_majuscule(s_etat_processus, + (*((struct_fonction *) (*(*l_element_courant).donnee).objet)) .nom_fonction); @@ -2741,6 +2705,7 @@ recherche_type(struct_processus *s_etat_ { if ((fonction_majuscule = conversion_majuscule( + s_etat_processus, (*((struct_fonction *) ((*l_element_courant_fonctions) .donnee))).nom_fonction)) == NULL) @@ -2892,6 +2857,7 @@ recherche_type(struct_processus *s_etat_ free(l_element_courant_fonctions); } + (*s_etat_processus).autorisation_empilement_programme = 'Y'; break; } @@ -2948,8 +2914,6 @@ recherche_type(struct_processus *s_etat_ case '<' : { - registre_type = (*s_etat_processus).type_en_cours; - if ((*s_etat_processus).instruction_courante[1] == '[') { // Tableau @@ -3016,14 +2980,21 @@ recherche_type(struct_processus *s_etat_ (*(*s_etat_processus).l_base_pile_systeme) .retour_definition = 'Y'; + (*(*s_etat_processus).l_base_pile_systeme) + .origine_routine_evaluation = 'N'; (*s_etat_processus).niveau_courant = 0; (*s_etat_processus).autorisation_empilement_programme = 'N'; + + tampon = (*s_etat_processus).instruction_courante; + autorisation_evaluation_nom = (*s_etat_processus) + .autorisation_evaluation_nom; + (*s_etat_processus).autorisation_evaluation_nom = 'N'; + registre_mode_execution_programme = (*s_etat_processus).mode_execution_programme; (*s_etat_processus).mode_execution_programme = 'Y'; (*s_etat_processus).erreur_scrutation = d_faux; - tampon = (*s_etat_processus).instruction_courante; nombre_lignes_a_supprimer = (*s_etat_processus).hauteur_pile_operationnelle; @@ -3072,6 +3043,8 @@ recherche_type(struct_processus *s_etat_ } (*s_etat_processus).instruction_courante = tampon; + (*s_etat_processus).autorisation_evaluation_nom = + autorisation_evaluation_nom; effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = @@ -3125,6 +3098,8 @@ recherche_type(struct_processus *s_etat_ } (*s_etat_processus).instruction_courante = tampon; + (*s_etat_processus).autorisation_evaluation_nom = + autorisation_evaluation_nom; effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = @@ -3152,6 +3127,8 @@ recherche_type(struct_processus *s_etat_ } (*s_etat_processus).instruction_courante = tampon; + (*s_etat_processus).autorisation_evaluation_nom = + autorisation_evaluation_nom; (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = @@ -3284,7 +3261,6 @@ recherche_type(struct_processus *s_etat_ } } - (*s_etat_processus).type_en_cours = registre_type; break; }