X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftraverse.c;h=14cdac65148fa05c419f0bd6a514806d99d2fc28;hp=410054d7947a704407dbf3c559a569d22ea27a87;hb=ac8e5733a4a06c47096f582d23036e0eb6db1e88;hpb=71c1a95f1a9d2e33f3e37b287f9f8118ee01bf7f diff --git a/ccan/tdb2/traverse.c b/ccan/tdb2/traverse.c index 410054d7..14cdac65 100644 --- a/ccan/tdb2/traverse.c +++ b/ccan/tdb2/traverse.c @@ -26,14 +26,18 @@ static int64_t traverse(struct tdb_context *tdb, int ltype, struct tdb_data k, d; int64_t count = 0; + k.dptr = NULL; for (ret = first_in_hash(tdb, ltype, &tinfo, &k, &d.dsize); ret == 1; ret = next_in_hash(tdb, ltype, &tinfo, &k, &d.dsize)) { d.dptr = k.dptr + k.dsize; count++; - if (fn && fn(tdb, k, d, p)) + if (fn && fn(tdb, k, d, p)) { + free(k.dptr); break; + } + free(k.dptr); } if (ret < 0)