--- rpl/src/types.c 2010/11/26 11:46:38 1.24 +++ rpl/src/types.c 2011/07/22 07:38:42 1.37 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.20 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.1 + Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -79,6 +79,7 @@ recherche_type(struct_processus *s_etat_ unsigned char registre_test; unsigned char registre_test_bis; unsigned char *tampon; + unsigned char variable_implicite; unsigned long i; unsigned long j; @@ -2318,16 +2319,24 @@ recherche_type(struct_processus *s_etat_ } } + variable_implicite = (*s_etat_processus).autorisation_nom_implicite; registre_recherche_type = (*s_etat_processus).recherche_type; (*s_etat_processus).recherche_type = 'Y'; + (*s_etat_processus).autorisation_nom_implicite = 'Y'; if (sequenceur(s_etat_processus) == d_erreur) { - (*s_etat_processus).erreur_execution = d_ex_syntaxe; + (*s_etat_processus).autorisation_nom_implicite = + variable_implicite; (*s_etat_processus).recherche_type = registre_recherche_type; (*s_etat_processus).mode_execution_programme = registre_mode_execution_programme; - (*s_etat_processus).erreur_execution = d_ex_syntaxe; + + if ((*s_etat_processus).erreur_execution != + d_ex_nom_implicite) + { + (*s_etat_processus).erreur_execution = d_ex_syntaxe; + } nombre_lignes_a_supprimer = (*s_etat_processus).hauteur_pile_operationnelle @@ -2373,6 +2382,7 @@ recherche_type(struct_processus *s_etat_ return; } + (*s_etat_processus).autorisation_nom_implicite = variable_implicite; (*s_etat_processus).recherche_type = registre_recherche_type; (*s_etat_processus).mode_execution_programme = registre_mode_execution_programme; @@ -2957,8 +2967,14 @@ recherche_type(struct_processus *s_etat_ registre_recherche_type = (*s_etat_processus).recherche_type; (*s_etat_processus).recherche_type = 'Y'; + variable_implicite = + (*s_etat_processus).autorisation_nom_implicite; + (*s_etat_processus).autorisation_nom_implicite = 'Y'; + if (sequenceur(s_etat_processus) == d_erreur) { + (*s_etat_processus).autorisation_nom_implicite = + variable_implicite; (*s_etat_processus).erreur_execution = d_ex_syntaxe; (*s_etat_processus).recherche_type = registre_recherche_type; @@ -3009,6 +3025,8 @@ recherche_type(struct_processus *s_etat_ return; } + (*s_etat_processus).autorisation_nom_implicite = + variable_implicite; (*s_etat_processus).recherche_type = registre_recherche_type; (*s_etat_processus).mode_execution_programme = registre_mode_execution_programme; @@ -3419,7 +3437,9 @@ recherche_type(struct_processus *s_etat_ while((*ptr) != d_code_fin_chaine) { - if (isalnum((*ptr)) == 0) + if ((isalnum((*ptr)) == 0) && + ((*ptr) != '_') && + ((*ptr) != '$')) { free(s_objet);