Fix buffer free
authorJeroen van der Heijden <jeroen@transceptor.technology>
Fri, 25 Sep 2020 06:59:35 +0000 (08:59 +0200)
committerJeroen van der Heijden <jeroen@transceptor.technology>
Fri, 25 Sep 2020 06:59:35 +0000 (08:59 +0200)
include/siri/db/buffer.h
include/siri/version.h
src/siri/db/buffer.c
src/siri/db/db.c

index c4df0d0ca41e6124dffc52241321817417daa9f5..ce791d31e4178875692d64a4060790741bceab17 100644 (file)
@@ -15,6 +15,7 @@ typedef struct siridb_buffer_s siridb_buffer_t;
 
 siridb_buffer_t * siridb_buffer_new(void);
 void siridb_buffer_free(siridb_buffer_t * buffer);
+void siridb_buffer_close(siridb_buffer_t * buffer);
 _Bool siridb_buffer_is_valid_size(ssize_t ssize);
 void siridb_buffer_set_path(siridb_buffer_t * buffer, const char * str);
 int siridb_buffer_new_series(
index e76b66e708151f9ab737021d6c6ff3385f341b1e..60dac7a139d769f34c123eccca5890c840fbf36a 100644 (file)
@@ -15,7 +15,7 @@
  * Note that debian alpha packages should use versions like this:
  *   2.0.34-0alpha0
  */
-#define SIRIDB_VERSION_PRE_RELEASE "-alpha-0"
+#define SIRIDB_VERSION_PRE_RELEASE "-alpha-1"
 
 #ifndef NDEBUG
 #define SIRIDB_VERSION_BUILD_RELEASE "+debug"
index 2f1e95e0f811d544b4e8279f3c06238fcd03ed90..6a317173c85ac7afca0daca518e194d17f4a9d52 100644 (file)
@@ -73,6 +73,15 @@ void siridb_buffer_free(siridb_buffer_t * buffer)
     free(buffer);
 }
 
+void siridb_buffer_close(siridb_buffer_t * buffer)
+{
+    if (buffer->fp != NULL)
+    {
+        fclose(buffer->fp);
+        buffer->fp = NULL;
+    }
+}
+
 _Bool siridb_buffer_is_valid_size(ssize_t ssize)
 {
     return ssize >= 512 && (ssize % 512) == 0 && ssize <= MAX_BUFFER_SZ;
index 152cd12d74300458957d4041e713183961eb368d..b43f764724a80b925f18e303989524d0b5e3446d 100644 (file)
@@ -695,7 +695,7 @@ void siridb__free(siridb_t * siridb)
     /* first we should close the buffer and all other open files */
     if (siridb->buffer != NULL)
     {
-        siridb_buffer_free(siridb->buffer);
+        siridb_buffer_close(siridb->buffer);
     }
 
     if (siridb->dropped_fp != NULL)
@@ -779,12 +779,16 @@ void siridb__free(siridb_t * siridb)
          siridb_tags_decref(siridb->tags);
     }
 
+    if (siridb->buffer != NULL)
+    {
+        siridb_buffer_free(siridb->buffer);
+    }
+
     if (siridb->tee != NULL)
     {
         siridb_tee_free(siridb->tee);
     }
 
-
     /* unlock the database in case no siri_err occurred */
     if (!siri_err)
     {