X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftdb.c;h=19ebfb4961677f3b0740fa0f07c6f66b5aef1785;hp=7c8d3cd764fc4021f9cfa3d174e6f4d004116edc;hb=b3804e47471640f1f8c15f5013a78bdbeb12f69d;hpb=25ed8785693e98492c0c516a8845866ec784f2b9 diff --git a/ccan/tdb2/tdb.c b/ccan/tdb2/tdb.c index 7c8d3cd7..19ebfb49 100644 --- a/ccan/tdb2/tdb.c +++ b/ccan/tdb2/tdb.c @@ -268,6 +268,8 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, } TEST_IT(tdb->flags & TDB_CONVERT); tdb_convert(tdb, &tdb->header, sizeof(tdb->header)); + /* Zones don't matter for internal db. */ + tdb->last_zone = 0; return tdb; } @@ -518,9 +520,9 @@ static int update_rec_hdr(struct tdb_context *tdb, struct tdb_used_record *rec, uint64_t h) { - uint64_t room = rec_data_length(rec) + rec_extra_padding(rec); + uint64_t dataroom = rec_data_length(rec) + rec_extra_padding(rec); - if (set_header(tdb, rec, keylen, datalen, room - datalen, h)) + if (set_header(tdb, rec, keylen, datalen, keylen + dataroom, h)) return -1; return tdb_write_convert(tdb, off, rec, sizeof(*rec)); @@ -688,11 +690,11 @@ int tdb_store(struct tdb_context *tdb, + rec_extra_padding(&rec)); } -write: /* FIXME: Encode extra hash bits! */ if (tdb_write_off(tdb, hash_off(tdb, old_bucket), new_off) == -1) goto fail; +write: off = new_off + sizeof(struct tdb_used_record); if (tdb->methods->write(tdb, off, key.dptr, key.dsize) == -1) goto fail;