--- rpl/src/bibliotheques_externes.c 2017/07/12 15:43:06 1.73 +++ rpl/src/bibliotheques_externes.c 2017/07/30 21:59:41 1.74 @@ -53,6 +53,7 @@ chargement_bibliotheque(struct_processus struct_liste_chainee *l_element_courant; struct_liste_chainee *l_nouvel_element; + unsigned char *fleche; unsigned char **tableau; unsigned char *tampon; @@ -373,6 +374,11 @@ chargement_bibliotheque(struct_processus for(i = 0; i < nombre_symboles; i++) { + if ((fleche = strstr(tableau[i], "->")) != NULL) + { + strncpy(fleche, "to", 2); + } + (*s_etat_processus).s_instructions_externes[(*s_etat_processus) .nombre_instructions_externes].descripteur_bibliotheque = descripteur_bibliotheque; @@ -446,6 +452,10 @@ chargement_bibliotheque(struct_processus [(*s_etat_processus).nombre_instructions_externes - 1] .nom_bibliotheque); + // La nouvelle bibliothèque est mise en tête de la liste pour que + // les bibliothèques soient implicitement déchargées dans l'ordre + // inverse de leur chargement. + (*l_nouvel_element).suivant = (*s_etat_processus).s_bibliotheques; (*s_etat_processus).s_bibliotheques = l_nouvel_element; @@ -861,6 +871,7 @@ execution_fonction_de_bibliotheque(struc struct_rpl_arguments rpl_arguments; + unsigned char *fleche; unsigned char *nom_fonction_externe; unsigned char *tampon; @@ -905,6 +916,11 @@ execution_fonction_de_bibliotheque(struc } } + if ((fleche = strstr(nom_fonction, "->")) != NULL) + { + strncpy(fleche, "to", 2); + } + ordre_iteration = 0; nombre_iterations_maximal = ((integer8) (log((real8) (*s_etat_processus).nombre_instructions_externes) /