summaryrefslogtreecommitdiff
path: root/src/analysis/db/cdb.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-05-02 10:03:07 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-05-02 10:03:07 (GMT)
commitd419908c21172b72e7782f460f385b33ad85f929 (patch)
tree5e8f71350f5b0b82e5c4162aeefa2d308e0e234f /src/analysis/db/cdb.c
parentce43a13de1760603af2848bd51ab6bac3c794c10 (diff)
Cleaned some archive resources at exit.
Diffstat (limited to 'src/analysis/db/cdb.c')
-rw-r--r--src/analysis/db/cdb.c31
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));