--- rpl/src/gestion_pile.c 2010/06/24 10:10:41 1.12 +++ rpl/src/gestion_pile.c 2012/01/17 14:44:05 1.37 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.17 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.6 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -258,7 +258,9 @@ affichage_pile(struct_processus *s_etat_ registre = (*s_etat_processus).autorisation_conversion_chaine; (*s_etat_processus).autorisation_conversion_chaine = 'N'; + routine_recursive = 1; ecriture_pile(s_etat_processus, stdout, l_element_courant, niveau_courant); + routine_recursive = 0; (*s_etat_processus).autorisation_conversion_chaine = registre; return; @@ -266,15 +268,21 @@ affichage_pile(struct_processus *s_etat_ void ecriture_pile(struct_processus *s_etat_processus, file *flux, - struct_liste_chainee *l_element_courant, unsigned long niveau_courant) + struct_liste_chainee *l, unsigned long niveau_courant) { unsigned char *chaine; unsigned char *registre; unsigned char tampon[32 + 1]; + // Évite le warning : argument l_element_courant might be clobbered by + // longjmp or vfork + volatile struct_liste_chainee *l_element_courant; + + l_element_courant = l; + if (l_element_courant != NULL) { - if (setjmp(contexte) == 0) + if (setjmp(contexte_ecriture) == 0) { (*s_etat_processus).var_volatile_recursivite = -1; ecriture_pile(s_etat_processus, flux, @@ -364,7 +372,7 @@ ecriture_pile(struct_processus *s_etat_p void impression_pile(struct_processus *s_etat_processus, - struct_liste_chainee *l_element_courant, unsigned char methode, + struct_liste_chainee *l, unsigned char methode, unsigned long niveau_courant) { struct_objet s_objet; @@ -373,9 +381,15 @@ impression_pile(struct_processus *s_etat unsigned char *registre; unsigned char tampon[32 + 1]; + // Évite le warning : argument l_element_courant might be clobbered by + // longjmp or vfork + volatile struct_liste_chainee *l_element_courant; + + l_element_courant = l; + if (l_element_courant != NULL) { - if (setjmp(contexte) == 0) + if (setjmp(contexte_impression) == 0) { (*s_etat_processus).var_volatile_recursivite = -1; impression_pile(s_etat_processus, (*l_element_courant).suivant,