X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Fcheck.c;h=0766f9e9702122f011c5d4930072bd43e315ee3d;hp=dc18e64acc55e8d078a258a986200cd6e9daa89d;hb=539f1af037858b905c50c560f2a608555d8457ff;hpb=115648946c7a78e87fb45eac6c1759a347d4c7f8;ds=sidebyside diff --git a/ccan/tdb2/check.c b/ccan/tdb2/check.c index dc18e64a..0766f9e9 100644 --- a/ccan/tdb2/check.c +++ b/ccan/tdb2/check.c @@ -497,8 +497,7 @@ static bool check_linear(struct tdb_context *tdb, } found_recovery = true; len = sizeof(rec.r) + rec.r.max_len; - } else if (frec_magic(&rec.f) == TDB_FREE_MAGIC - || frec_magic(&rec.f) == TDB_COALESCING_MAGIC) { + } else if (frec_magic(&rec.f) == TDB_FREE_MAGIC) { len = sizeof(rec.u) + frec_len(&rec.f); if (off + len > tdb->map_size) { tdb_logerr(tdb, TDB_ERR_CORRUPT, @@ -508,8 +507,8 @@ static bool check_linear(struct tdb_context *tdb, (long long)len, (long long)off); return false; } - /* This record is free! */ - if (frec_magic(&rec.f) == TDB_FREE_MAGIC + /* This record should be in free lists. */ + if (frec_flist(&rec.f) != TDB_FLIST_NONE && !append(free, num_free, off)) return false; } else {