X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;ds=sidebyside;f=ccan%2Ftdb2%2Ffree.c;h=e853d97eedce65dc8ae4b52313ac5a12ca2ba80d;hb=9d9a9897b608af3a6acd623cc09557f9985b03e6;hp=97320b585d727d82796e725ef97d1f71e3461e30;hpb=3835bb95d716cb6448913792b0d8d539877d93e9;p=ccan diff --git a/ccan/tdb2/free.c b/ccan/tdb2/free.c index 97320b58..e853d97e 100644 --- a/ccan/tdb2/free.c +++ b/ccan/tdb2/free.c @@ -268,7 +268,6 @@ static tdb_off_t ftable_offset(struct tdb_context *tdb, unsigned int ftable) off = first_ftable(tdb); for (i = 0; i < ftable; i++) { if (TDB_OFF_IS_ERR(off)) { - tdb->ecode = off; break; } off = next_ftable(tdb, off); @@ -392,7 +391,6 @@ static tdb_bool_err coalesce(struct tdb_context *tdb, ecode = add_free_record(tdb, off, end - off); if (ecode != TDB_SUCCESS) { - tdb->ecode = ecode; return ecode; } return true; @@ -525,6 +523,15 @@ again: goto unlock_err; } + /* For futureproofing, we put a 0 in any unused space. */ + if (rec_extra_padding(&rec)) { + ecode = tdb->methods->twrite(tdb, best_off + sizeof(rec) + + keylen + datalen, "", 1); + if (ecode != TDB_SUCCESS) { + goto unlock_err; + } + } + /* Bucket of leftover will be <= current bucket, so nested * locking is allowed. */ if (leftover) {