X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Fcore%2Fdata.c;h=8c54c9390842f0014df803009af11358fe6fbc76;hp=2665165a0970e98075a702bbea020e3803e35cab;hb=e77d39dc08f318db6fcf233e85c93e347a03f80f;hpb=bd9863d23596c42cbd1b5d7a63425fce90420c3a 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