--- rpl/src/interruptions.c 2010/03/04 10:17:54 1.4 +++ rpl/src/interruptions.c 2010/03/06 18:29:07 1.5 @@ -916,12 +916,6 @@ liberation_threads(struct_processus *s_e { if (((*((struct_descripteur_fichier *) (*((struct_liste_chainee *) element_courant)) - .donnee)).descripteur == - (*((struct_descripteur_fichier *) - (*((struct_liste_chainee *) element_candidat)) - .donnee)).descripteur) && - ((*((struct_descripteur_fichier *) - (*((struct_liste_chainee *) element_courant)) .donnee)).pid == (*((struct_descripteur_fichier *) (*((struct_liste_chainee *) element_candidat)) @@ -932,7 +926,52 @@ liberation_threads(struct_processus *s_e (*((struct_liste_chainee *) element_candidat)) .donnee)).tid) != 0)) { - break; + if ((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) element_courant)) + .donnee)).type == + (*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) element_candidat)) + .donnee)).type) + { + if ((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + element_candidat)).donnee)).type == 'C') + { + if ((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + element_courant)).donnee)) + .descripteur_c == + (*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + element_candidat)).donnee)) + .descripteur_c) + { + break; + } + } + else + { + if (((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + element_courant)).donnee)) + .descripteur_sqlite == + (*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + element_candidat)).donnee)) + .descripteur_sqlite) && + ((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + element_courant)).donnee)) + .descripteur_c == + (*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + element_candidat)).donnee)) + .descripteur_c)) + { + break; + } + } + } } element_candidat = (*((struct_liste_chainee *) @@ -943,7 +982,16 @@ liberation_threads(struct_processus *s_e { fclose((*((struct_descripteur_fichier *) (*((struct_liste_chainee *) element_courant)) - .donnee)).descripteur); + .donnee)).descripteur_c); + + if ((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) element_courant)) + .donnee)).type != 'C') + { + sqlite3_close((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) element_courant)) + .donnee)).descripteur_sqlite); + } } free((*((struct_descripteur_fichier *)