From 14a8666c97211f4074bb89eb6768231bc18539be Mon Sep 17 00:00:00 2001 From: Jeroen van der Heijden Date: Fri, 25 Sep 2020 08:59:35 +0200 Subject: [PATCH] Fix buffer free --- include/siri/db/buffer.h | 1 + include/siri/version.h | 2 +- src/siri/db/buffer.c | 9 +++++++++ src/siri/db/db.c | 8 ++++++-- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/include/siri/db/buffer.h b/include/siri/db/buffer.h index c4df0d0c..ce791d31 100644 --- a/include/siri/db/buffer.h +++ b/include/siri/db/buffer.h @@ -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( diff --git a/include/siri/version.h b/include/siri/version.h index e76b66e7..60dac7a1 100644 --- a/include/siri/version.h +++ b/include/siri/version.h @@ -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" diff --git a/src/siri/db/buffer.c b/src/siri/db/buffer.c index 2f1e95e0..6a317173 100644 --- a/src/siri/db/buffer.c +++ b/src/siri/db/buffer.c @@ -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; diff --git a/src/siri/db/db.c b/src/siri/db/db.c index 152cd12d..b43f7647 100644 --- a/src/siri/db/db.c +++ b/src/siri/db/db.c @@ -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) { -- 2.30.2