From e77d39dc08f318db6fcf233e85c93e347a03f80f Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Fri, 2 Jan 2015 12:33:50 +0100 Subject: [PATCH] data: Free binary and regex array values as well. --- src/core/data.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/core/data.c b/src/core/data.c index 2665165..8c54c93 100644 --- a/src/core/data.c +++ b/src/core/data.c @@ -166,6 +166,34 @@ free_array_values(sdb_data_t *datum) v[i] = NULL; } } + else if (type == SDB_TYPE_BINARY) { + struct { + size_t length; + unsigned char *datum; + } *v = datum->data.array.values; + size_t i; + + for (i = 0; i < datum->data.array.length; ++i) { + if (v[i].datum) + free(v[i].datum); + v[i].datum = NULL; + } + } + else if (type == SDB_TYPE_REGEX) { + struct { + char *raw; + regex_t regex; + } *v = datum->data.array.values; + size_t i; + + for (i = 0; i < datum->data.array.length; ++i) { + if (v[i].raw) { + free(v[i].raw); + regfree(&v[i].regex); + } + v[i].raw = NULL; + } + } } /* free_array_values */ /* compare two arrays element-by-element returning how the first non-equal -- 2.30.2