--- rpl/src/compilation.c 2015/01/27 14:18:05 1.72 +++ rpl/src/compilation.c 2015/01/28 21:47:26 1.75 @@ -281,6 +281,15 @@ compilation(struct_processus *s_etat_pro while(i <= position_fin_nom_definition) { + if ((*s_etat_processus).pointeurs_caracteres_variables + [(*s_etat_processus).definitions_chainees[i]] < 0) + { + free(s_variable); + + (*s_etat_processus).erreur_execution = d_ex_syntaxe; + return(d_erreur); + } + *(definition++) = (*s_etat_processus) .definitions_chainees[i++]; } @@ -290,6 +299,8 @@ compilation(struct_processus *s_etat_pro if (recherche_variable(s_etat_processus, (*s_variable).nom) == d_vrai) { + free(s_variable); + if ((*s_etat_processus).langue == 'F') { printf("+++Attention : Plusieurs définitions de" @@ -311,7 +322,6 @@ compilation(struct_processus *s_etat_pro if ((*s_etat_processus).erreur_systeme != d_es) { free(s_variable); - return(d_erreur); } @@ -1479,7 +1489,9 @@ recherche_instruction_suivante_recursive pointeur_caractere_courant++; } - if ((*pointeur_caractere_courant) == '>') + if (((*pointeur_caractere_courant) == '>') && + ((*(pointeur_caractere_courant - 1)) == + d_code_espace)) { if ((*(++pointeur_caractere_courant)) == '>') { @@ -1659,7 +1671,7 @@ recherche_instruction_suivante_recursive default: { (*s_etat_processus).erreur_execution = d_ex_syntaxe; - return(d_erreur); +// return(d_erreur); } } }