--- rpl/src/instructions_s1.c 2011/03/06 16:44:13 1.23 +++ rpl/src/instructions_s1.c 2011/04/14 08:46:46 1.23.2.4 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.21 + RPL/2 (R) version 4.0.23 Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -3245,6 +3245,17 @@ instruction_sto(struct_processus *s_etat return; } + if ((*s_etat_processus).autorisation_nom_implicite == 'N') + { + liberation(s_etat_processus, s_objet_1); + liberation(s_etat_processus, s_objet_2); + + (*s_etat_processus).erreur_systeme = d_es; + (*s_etat_processus).erreur_execution = + d_ex_creation_variable_globale; + return; + } + if ((s_variable.nom = malloc((strlen((*((struct_nom *) (*s_objet_1).objet)).nom) + 1) * sizeof(unsigned char))) == NULL) @@ -3295,6 +3306,20 @@ instruction_sto(struct_processus *s_etat } else { + if ((*s_etat_processus).autorisation_nom_implicite == 'N') + { + if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) + .position_variable_courante].niveau == 1) + { + liberation(s_etat_processus, s_objet_1); + liberation(s_etat_processus, s_objet_2); + + (*s_etat_processus).erreur_execution = + d_ex_creation_variable_globale; + return; + } + } + liberation(s_etat_processus, (*s_etat_processus).s_liste_variables[(*s_etat_processus) .position_variable_courante].objet); @@ -3310,6 +3335,17 @@ instruction_sto(struct_processus *s_etat * une variable globale. */ + if ((*s_etat_processus).autorisation_nom_implicite == 'N') + { + liberation(s_etat_processus, s_objet_1); + liberation(s_etat_processus, s_objet_2); + + (*s_etat_processus).erreur_systeme = d_es; + (*s_etat_processus).erreur_execution = + d_ex_creation_variable_globale; + return; + } + if ((s_variable.nom = malloc((strlen((*((struct_nom *) (*s_objet_1).objet)).nom) + 1) * sizeof(unsigned char))) == NULL)