--- rpl/src/bibliotheques_externes.c 2013/03/20 17:11:43 1.51 +++ rpl/src/bibliotheques_externes.c 2017/01/18 15:44:16 1.69 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 - Copyright (C) 1989-2013 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.26 + Copyright (C) 1989-2017 Dr. BERTRAND Joël This file is part of RPL/2. @@ -41,7 +41,8 @@ void * chargement_bibliotheque(struct_processus *s_etat_processus, unsigned char *bibliotheque) { - char **(*fonction)(integer8 *, const char *); + char **(*fonction)(struct_rpl_arguments *, + integer8 *, const char *); char *message; integer8 i; @@ -56,7 +57,7 @@ chargement_bibliotheque(struct_processus unsigned char *tampon; void *descripteur_bibliotheque; - void (*onloading)(struct_rpl_arguments *); + int (*onloading)(struct_rpl_arguments *); /* * On vérifie que la bibliothèque n'est pas déjà chargée. @@ -335,8 +336,8 @@ chargement_bibliotheque(struct_processus * Ajout des symboles externes */ - if ((tableau = (unsigned char **) (*fonction)((&nombre_symboles), - d_version_rpl)) == NULL) + if ((tableau = (unsigned char **) (*fonction)(&rpl_arguments, + (&nombre_symboles), d_version_rpl)) == NULL) { /* * Nombre symboles : @@ -489,7 +490,7 @@ retrait_bibliotheque(struct_processus *s integer8 j; integer8 nombre_symboles_residuels; - void (*onclosing)(struct_rpl_arguments *); + int (*onclosing)(struct_rpl_arguments *); l_element_courant = (*s_etat_processus).s_bibliotheques; presence_bibliotheque = d_faux; @@ -870,7 +871,7 @@ execution_fonction_de_bibliotheque(struc integer8 nombre_iterations_maximal; integer8 ordre_iteration; - void (*fonction)(struct_rpl_arguments *); + int (*fonction)(struct_rpl_arguments *); /* * Recherche dichotomique de la définition externe @@ -1405,7 +1406,10 @@ empilement_pile_operationnelle(struct_rp struct_liste_chainee *l_ancienne_base_liste; struct_liste_chainee *l_nouvelle_base_liste; + struct_processus *s_etat_processus; + l_ancienne_base_liste = (*s_rpl_arguments).l_base_pile; + s_etat_processus = (*s_rpl_arguments).s_etat_processus; l_nouvelle_base_liste = (struct_liste_chainee *) malloc( sizeof(struct_liste_chainee)); @@ -1441,6 +1445,8 @@ depilement_pile_operationnelle(struct_rp struct_liste_chainee *l_ancienne_base_liste; struct_liste_chainee *l_nouvelle_base_liste; + struct_processus *s_etat_processus; + if ((*s_rpl_arguments).l_base_pile == NULL) { *s_objet = NULL; @@ -1450,6 +1456,7 @@ depilement_pile_operationnelle(struct_rp { l_ancienne_base_liste = (*s_rpl_arguments).l_base_pile; l_nouvelle_base_liste = (*l_ancienne_base_liste).suivant; + s_etat_processus = (*s_rpl_arguments).s_etat_processus; *s_objet = (*l_ancienne_base_liste).donnee; free(l_ancienne_base_liste);