From 1ea106fa050d479eb2092d2fa53d326fcbc21a44 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Fri, 3 Feb 2017 18:46:26 +1000 Subject: [PATCH] * simdb_search_free() --- src/database.c | 10 ++++++++++ src/simdb.h | 10 ++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/database.c b/src/database.c index c335643..6da5d4c 100644 --- a/src/database.c +++ b/src/database.c @@ -365,6 +365,16 @@ simdb_search_init(simdb_search_t *search) { return; } +void +simdb_search_free(simdb_search_t *search) { + assert(search != NULL); + + if (search->found == 0) + return; + FREE(search->matches); + search->found = 0; +} + int simdb_search(simdb_t *db, simdb_search_t *search, simdb_urec_t *sample) { simdb_match_t *matches; diff --git a/src/simdb.h b/src/simdb.h index 1470ef0..1458633 100644 --- a/src/simdb.h +++ b/src/simdb.h @@ -110,12 +110,18 @@ const char * simdb_error(int code); */ void simdb_search_init(simdb_search_t *search); +/** + * @brief Free search results + * @param search Pointer to search struct + */ +void simdb_search_free(simdb_search_t *search); + /** * @brief Compare given record in database to other records * @param db Database handle * @param num Record sample number * @param search Search parameters - * @param matches Pointer to storage for found matches (allocated) + * @note If called with non-empty search struct, results will be free()ed automatically * @retval >0 if found some matches * @retval 0 if nothing found * @retval <0 on error @@ -127,7 +133,7 @@ int simdb_search_byid(simdb_t *db, simdb_search_t *search, int num); * @param db Database handle * @param file Path to file to compare against database * @param search Search parameters - * @param matches Pointer to storage for found matches (allocated) + * @note If called with non-empty search struct, results will be free()ed automatically * @retval >0 if found some matches * @retval 0 if nothing found * @retval <0 on error