diff options
Diffstat (limited to 'src/analysis/db/cdb.c')
-rw-r--r-- | src/analysis/db/cdb.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/analysis/db/cdb.c b/src/analysis/db/cdb.c index 14ea5c7..e909210 100644 --- a/src/analysis/db/cdb.c +++ b/src/analysis/db/cdb.c @@ -26,6 +26,7 @@ #include <archive.h> #include <archive_entry.h> +#include <assert.h> #include <errno.h> #include <fcntl.h> #include <malloc.h> @@ -253,10 +254,38 @@ static void g_cdb_archive_dispose(GCdbArchive *archive) static void g_cdb_archive_finalize(GCdbArchive *archive) { - //void close_xml_file(xmlDocPtr, xmlXPathContextPtr); + int ret; /* Bilan d'un appel */ + + if (archive->db != NULL) + { + ret = sqlite3_close(archive->db); + assert(ret == SQLITE_OK); + } + + if (archive->xdoc != NULL) + close_xml_file(archive->xdoc, archive->context); + + if (archive->xml_desc != NULL) + { + ret = unlink(archive->xml_desc); + if (ret != 0) perror("unlink"); + + free(archive->xml_desc); + + } + + if (archive->sql_db != NULL) + { + ret = unlink(archive->sql_db); + if (ret != 0) perror("unlink"); + + free(archive->sql_db); + + } free(archive->filename); + exit_rle_string(&archive->hash); G_OBJECT_CLASS(g_cdb_archive_parent_class)->finalize(G_OBJECT(archive)); |