--- rpl/src/gestion_pile_systeme.c 2013/03/05 16:26:46 1.52 +++ rpl/src/gestion_pile_systeme.c 2013/06/21 14:15:52 1.63 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 + RPL/2 (R) version 4.1.15 Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -39,9 +39,10 @@ static inline void estimation_taille_pile_systeme(struct_processus *s_etat_processus) { (*s_etat_processus).estimation_taille_pile_systeme_tampon = - ((*s_etat_processus).estimation_taille_pile_systeme_tampon * - ((double) 0.9)) + ((*s_etat_processus) - .hauteur_pile_systeme * ((double) 0.1)); + (((double) (*s_etat_processus) + .estimation_taille_pile_systeme_tampon) * + ((double) 0.9)) + (((double) (*s_etat_processus) + .hauteur_pile_systeme) * ((double) 0.1)); return; } @@ -302,13 +303,12 @@ effacement_pile_systeme(struct_processus void trace(struct_processus *s_etat_processus, FILE *flux) { - int candidat; - int j; - int nb_variables; - integer8 i; + integer8 j; + integer8 candidat; integer8 candidat8; integer8 delta; + integer8 nb_variables; struct_liste_chainee *l_element_expression; @@ -332,8 +332,8 @@ trace(struct_processus *s_etat_processus nb_variables = nombre_variables(s_etat_processus); - if ((tableau = malloc(nb_variables * sizeof(struct_tableau_variables))) - == NULL) + if ((tableau = malloc(((size_t) nb_variables) * + sizeof(struct_tableau_variables))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -348,7 +348,7 @@ trace(struct_processus *s_etat_processus while(l_element_courant != NULL) { - fprintf(flux, "%d : address # %016Xh\n", i--, l_element_courant); + fprintf(flux, "%lld : address # %016Xh\n", i--, l_element_courant); if ((*l_element_courant).creation_variables_statiques == d_vrai) { @@ -492,11 +492,10 @@ trace(struct_processus *s_etat_processus } } - fprintf(flux, " Level = %d\n", - (*l_element_courant).niveau_courant); + fprintf(flux, " Level = %lld\n", + (long long int) (*l_element_courant).niveau_courant); - if (((*l_element_courant).retour_definition == 'Y') || - ((*l_element_courant).origine_routine_evaluation == 'Y')) + if ((*l_element_courant).retour_definition == 'Y') { fprintf(flux, " Return = yes\n"); @@ -571,6 +570,7 @@ trace(struct_processus *s_etat_processus } else { + fprintf(flux, " Come from = compiled code\n"); fprintf(flux, " = " "optimized definition\n"); } @@ -595,7 +595,7 @@ trace(struct_processus *s_etat_processus if ((*(tableau[j].objet)).type == ADR) { delta = (*l_element_courant).adresse_retour - - (*((unsigned long *) + - (*((integer8 *) (*(tableau[j].objet)).objet)); if ((delta >= 0) && (delta < candidat8)) @@ -617,12 +617,16 @@ trace(struct_processus *s_etat_processus "unknown definition\n"); } } - else + else if ((*l_element_courant).niveau_courant == 0) { fprintf(flux, "\n"); fprintf(flux, " = RPL/2 " "initialization\n"); } + else + { + fprintf(flux, "\n"); + } } } else @@ -630,7 +634,8 @@ trace(struct_processus *s_etat_processus fprintf(flux, " Return = no\n"); } - if ((*l_element_courant).indice_boucle != NULL) + if (((*l_element_courant).indice_boucle != NULL) && + ((*l_element_courant).type_cloture != 'A')) { tampon = formateur(s_etat_processus, 24, (*l_element_courant).indice_boucle); @@ -665,7 +670,6 @@ trace(struct_processus *s_etat_processus l_element_courant = (*l_element_courant).suivant; } - fprintf(flux, "\n"); funlockfile(flux); free(tableau);