X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Fcheck.c;h=ad736c6829a7a5d6d64297553235d892dfad61aa;hp=b44ae42a680c8923fe24826da080f374e05bcb45;hb=f1069e4a2d5a8115695fb8ea3e78dbdcf389aead;hpb=f6067e4cbd7b7415571f12438aec00faec5657fb diff --git a/ccan/tdb2/check.c b/ccan/tdb2/check.c index b44ae42a..ad736c68 100644 --- a/ccan/tdb2/check.c +++ b/ccan/tdb2/check.c @@ -402,22 +402,26 @@ static enum TDB_ERROR check_hash_tree(struct tdb_context *tdb, check: if (check) { TDB_DATA key, data; - key.dsize = rec_key_length(&rec); - data.dsize = rec_data_length(&rec); - key.dptr = (void *)tdb_access_read(tdb, - off + sizeof(rec), - key.dsize + data.dsize, - false); - if (TDB_PTR_IS_ERR(key.dptr)) { - ecode = TDB_PTR_ERR(key.dptr); + const unsigned char *kptr; + + kptr = tdb_access_read(tdb, + off + sizeof(rec), + rec_key_length(&rec) + + rec_data_length(&rec), + false); + if (TDB_PTR_IS_ERR(kptr)) { + ecode = TDB_PTR_ERR(kptr); goto fail; } - data.dptr = key.dptr + key.dsize; + + key = tdb_mkdata(kptr, rec_key_length(&rec)); + data = tdb_mkdata(kptr + key.dsize, + rec_data_length(&rec)); ecode = check(key, data, private_data); + tdb_access_release(tdb, kptr); if (ecode != TDB_SUCCESS) { goto fail; } - tdb_access_release(tdb, key.dptr); } } } @@ -755,8 +759,8 @@ static enum TDB_ERROR check_linear(struct tdb_context *tdb, enum TDB_ERROR tdb_check_(struct tdb_context *tdb, enum TDB_ERROR (*check)(TDB_DATA key, TDB_DATA data, - void *private), - void *private) + void *private_data), + void *private_data) { tdb_off_t *fr = NULL, *used = NULL, ft, recovery; size_t num_free = 0, num_used = 0, num_found = 0, num_ftables = 0; @@ -797,7 +801,8 @@ enum TDB_ERROR tdb_check_(struct tdb_context *tdb, } /* FIXME: Check key uniqueness? */ - ecode = check_hash(tdb, used, num_used, num_ftables, check, private); + ecode = check_hash(tdb, used, num_used, num_ftables, check, + private_data); if (ecode != TDB_SUCCESS) goto out;