diff --git a/shlr/sdb/src/main.c b/shlr/sdb/src/main.c index 7d51e5c83a..88750565c6 100644 --- a/shlr/sdb/src/main.c +++ b/shlr/sdb/src/main.c @@ -119,6 +119,8 @@ static int dbdiff (const char *a, const char *b) { } sdb_free (A); sdb_free (B); + free (k); + free (v); return n; } diff --git a/shlr/sdb/src/query.c b/shlr/sdb/src/query.c index 7830695025..4d0f94a73f 100644 --- a/shlr/sdb/src/query.c +++ b/shlr/sdb/src/query.c @@ -123,6 +123,7 @@ next_quote: *eq++ = 0; if (bufset) free (buf); + free (out); return NULL; } next = strchr (quot, ';'); @@ -138,6 +139,7 @@ next_quote: s = sdb_ns (s, cmd); if (!s) { eprintf ("Cant find namespace %s\n", cmd); + free (out); return NULL; } cmd = arroba+1; @@ -222,7 +224,7 @@ next_quote: } } } - return buf; + out_concat (buf); } else if (*cmd == '[') { // [?] - count elements of array if (cmd[1]=='?') { diff --git a/shlr/sdb/src/sdb-version.h b/shlr/sdb/src/sdb-version.h new file mode 100644 index 0000000000..b59ab2cdb0 --- /dev/null +++ b/shlr/sdb/src/sdb-version.h @@ -0,0 +1 @@ +#define SDB_VERSION "0.8.0.rc3" diff --git a/shlr/sdb/src/sdb.c b/shlr/sdb/src/sdb.c index 7ecb66d365..975814c0ec 100644 --- a/shlr/sdb/src/sdb.c +++ b/shlr/sdb/src/sdb.c @@ -334,14 +334,11 @@ SDB_API int sdb_foreach (Sdb* s, SdbForeachCallback cb, void *user) { if (!cb (user, kv->key, kv->value)) return 0; } else { - if (!cb (user, k, v)) { - free (k); - free (v); - return 0; - } + int ret = cb (user, k, v); + free (k); + free (v); + if (!ret) return 0; } - free (k); - free (v); } ls_foreach (s->ht->list, iter, kv) { if (!kv->value || !*kv->value)