Browse Source

tdb2: close memory leak in traverse.

Rusty Russell 15 years ago
parent
commit
ac8e5733a4
1 changed files with 5 additions and 1 deletions
  1. 5 1
      ccan/tdb2/traverse.c

+ 5 - 1
ccan/tdb2/traverse.c

@@ -26,14 +26,18 @@ static int64_t traverse(struct tdb_context *tdb, int ltype,
 	struct tdb_data k, d;
 	struct tdb_data k, d;
 	int64_t count = 0;
 	int64_t count = 0;
 
 
+	k.dptr = NULL;
 	for (ret = first_in_hash(tdb, ltype, &tinfo, &k, &d.dsize);
 	for (ret = first_in_hash(tdb, ltype, &tinfo, &k, &d.dsize);
 	     ret == 1;
 	     ret == 1;
 	     ret = next_in_hash(tdb, ltype, &tinfo, &k, &d.dsize)) {
 	     ret = next_in_hash(tdb, ltype, &tinfo, &k, &d.dsize)) {
 		d.dptr = k.dptr + k.dsize;
 		d.dptr = k.dptr + k.dsize;
 		
 		
 		count++;
 		count++;
-		if (fn && fn(tdb, k, d, p))
+		if (fn && fn(tdb, k, d, p)) {
+			free(k.dptr);
 			break;
 			break;
+		}
+		free(k.dptr);
 	}
 	}
 
 
 	if (ret < 0)
 	if (ret < 0)