--- rpl/src/analyse.c 2010/05/24 10:58:28 1.18 +++ rpl/src/analyse.c 2010/07/31 10:34:17 1.24 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.16 + RPL/2 (R) version 4.0.18 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -715,6 +715,7 @@ initialisation_instructions(struct_proce INSTRUCTION("APPEND", instruction_append); INSTRUCTION("ARRY->", instruction_array_fleche); INSTRUCTION("ATEXIT", instruction_atexit); + INSTRUCTION("ATPOKE", instruction_atpoke); INSTRUCTION("BESSEL", instruction_bessel); INSTRUCTION("CLRERR", instruction_clrerr); INSTRUCTION("CLRMTX", instruction_clrmtx); @@ -834,7 +835,9 @@ initialisation_instructions(struct_proce INSTRUCTION("AUTOSCALE", instruction_autoscale); INSTRUCTION("BACKSPACE", instruction_backspace); + INSTRUCTION("BACKTRACE", instruction_backtrace); INSTRUCTION("CLRATEXIT", instruction_clratexit); + INSTRUCTION("CLRATPOKE", instruction_clratpoke); INSTRUCTION("COPYRIGHT", instruction_copyright); //INSTRUCTION("CYLINDRIC"); INSTRUCTION("DAEMONIZE", instruction_daemonize); @@ -1232,17 +1235,17 @@ analyse(struct_processus *s_etat_process ((*s_etat_processus).erreur_systeme != d_es) || ((*s_etat_processus).exception != d_ep)) { - if ((*s_etat_processus).instruction_derniere_erreur != NULL) - { - free((*s_etat_processus).instruction_derniere_erreur); - (*s_etat_processus).instruction_derniere_erreur = NULL; - } - (*s_etat_processus).niveau_derniere_erreur = (*s_etat_processus).niveau_courant; if ((*s_etat_processus).mode_execution_programme == 'Y') { + if ((*s_etat_processus).instruction_derniere_erreur != NULL) + { + free((*s_etat_processus).instruction_derniere_erreur); + (*s_etat_processus).instruction_derniere_erreur = NULL; + } + if ((*s_etat_processus).instruction_courante == NULL) { if (((*s_etat_processus).instruction_derniere_erreur = @@ -1274,11 +1277,22 @@ analyse(struct_processus *s_etat_process } else { - if (((*s_etat_processus).instruction_derniere_erreur = - formateur(s_etat_processus, 0, - (*s_etat_processus).objet_courant)) == NULL) + if ((*s_etat_processus).objet_courant != NULL) { - return; + if ((*s_etat_processus).instruction_derniere_erreur != NULL) + { + free((*s_etat_processus).instruction_derniere_erreur); + (*s_etat_processus).instruction_derniere_erreur = NULL; + } + + if (((*s_etat_processus).instruction_derniere_erreur = + formateur(s_etat_processus, 0, + (*s_etat_processus).objet_courant)) == NULL) + { + return; + } + + (*s_etat_processus).objet_courant = NULL; } } }