--- rpl/src/instructions_s1.c 2010/06/17 11:00:23 1.12 +++ rpl/src/instructions_s1.c 2011/04/13 17:43:14 1.23.2.3 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.16 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.0.22 + Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -2573,6 +2573,12 @@ instruction_start(struct_processus *s_et } empilement_pile_systeme(s_etat_processus); + + if ((*s_etat_processus).erreur_systeme != d_es) + { + return; + } + (*(*s_etat_processus).l_base_pile_systeme).type_cloture = 'S'; if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), @@ -3239,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) @@ -3289,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); @@ -3304,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)