--- rpl/src/types.c 2010/02/10 10:14:26 1.6 +++ rpl/src/types.c 2010/04/20 12:49:18 1.12 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.11 + RPL/2 (R) version 4.0.14 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -176,6 +176,9 @@ recherche_type(struct_processus *s_etat_ (*s_objet).type = FCT; (*s_objet).objet = element; + (*((struct_fonction *) (*s_objet).objet)).prediction_saut = NULL; + (*((struct_fonction *) (*s_objet).objet)).prediction_execution + = d_faux; if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), s_objet) == d_erreur) @@ -373,6 +376,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).mode_execution_programme = registre_mode_execution_programme; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant; @@ -1182,6 +1186,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).instruction_courante = tampon; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = @@ -1230,6 +1235,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).instruction_courante = tampon; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = @@ -1589,6 +1595,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).instruction_courante = tampon; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = @@ -1638,6 +1645,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).instruction_courante = tampon; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = @@ -2248,6 +2256,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).autorisation_evaluation_nom = autorisation_evaluation_nom; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant; @@ -2315,6 +2324,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).autorisation_evaluation_nom = autorisation_evaluation_nom; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant; @@ -2363,6 +2373,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).autorisation_evaluation_nom = autorisation_evaluation_nom; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant; @@ -2731,7 +2742,7 @@ recherche_type(struct_processus *s_etat_ (*s_sous_objet).type = FCT; if (((*s_sous_objet).objet = (void *) - allocation(s_etat_processus, FCT)) + malloc(sizeof(struct_fonction))) == NULL) { (*s_etat_processus).erreur_systeme = @@ -2936,6 +2947,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).instruction_courante = tampon; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = @@ -2985,6 +2997,7 @@ recherche_type(struct_processus *s_etat_ (*s_etat_processus).instruction_courante = tampon; + effacement_pile_systeme(s_etat_processus); (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile; (*s_etat_processus).niveau_courant = @@ -3035,10 +3048,7 @@ recherche_type(struct_processus *s_etat_ nombre_lignes = profondeur_finale - profondeur_initiale; - element = (void *) ((struct_tableau *) malloc( - sizeof(struct_tableau))); - - if (element == NULL) + if ((element = malloc(sizeof(struct_tableau))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -3112,12 +3122,15 @@ recherche_type(struct_processus *s_etat_ if (element == NULL) { +// ICI if ((*s_etat_processus).erreur_systeme != d_es) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; } + free(s_objet); + (*s_etat_processus).traitement_interruptible = registre_interruption; return; @@ -3468,7 +3481,8 @@ recherche_type(struct_processus *s_etat_ &((*s_etat_processus).l_base_pile), s_objet) == d_erreur) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - (*s_etat_processus).traitement_interruptible = registre_interruption; + (*s_etat_processus).traitement_interruptible = + registre_interruption; return; }