--- rpl/src/instructions_d5.c 2010/01/26 15:22:44 1.1.1.1 +++ rpl/src/instructions_d5.c 2010/03/06 18:29:07 1.7 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.9 + RPL/2 (R) version 4.0.12 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -1760,7 +1760,14 @@ instruction_detach(struct_processus *s_e l_element_suivant = (*l_element_courant).suivant; fclose((*((struct_descripteur_fichier *) - (*l_element_courant).donnee)).descripteur); + (*l_element_courant).donnee)).descripteur_c); + + if ((*((struct_descripteur_fichier *) + (*l_element_courant).donnee)).type != 'C') + { + sqlite3_close((*((struct_descripteur_fichier *) + (*l_element_courant).donnee)).descripteur_sqlite); + } free((*((struct_descripteur_fichier *) (*l_element_courant) .donnee)).nom); @@ -1979,7 +1986,14 @@ instruction_detach(struct_processus *s_e l_element_suivant = (*l_element_courant).suivant; fclose((*((struct_descripteur_fichier *) - (*l_element_courant).donnee)).descripteur); + (*l_element_courant).donnee)).descripteur_c); + + if ((*((struct_descripteur_fichier *) + (*l_element_courant).donnee)).type != 'C') + { + sqlite3_close((*((struct_descripteur_fichier *) + (*l_element_courant).donnee)).descripteur_sqlite); + } if (((*((struct_descripteur_fichier *) (*l_element_courant) .donnee)).pid == getpid()) && @@ -2515,9 +2529,11 @@ instruction_detach(struct_processus *s_e liberation(s_etat_processus, s_objet); +# ifndef Cygwin free((*s_etat_processus).pile_signal.ss_sp); - free((*s_etat_processus).definitions_chainees); +# endif + free((*s_etat_processus).definitions_chainees); free((*s_etat_processus).nom_fichier_historique); for(i = 0; i < d_NOMBRE_INTERRUPTIONS; i++) @@ -2573,6 +2589,11 @@ instruction_detach(struct_processus *s_e sem_destroy(&semaphore_gestionnaires_signaux_atomique); clear_history(); + +# ifdef DEBUG_MEMOIRE + debug_memoire_verification(s_etat_processus); +# endif + exit(EXIT_SUCCESS); } else