X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Fopen.c;h=fec3ef1596a562c90c6c40588265b0e05c93ed20;hp=e88c9e694c531b67bf4a6ff33d113a3b4078ad59;hb=77658070a3e4f712b94d659b2e399031ce3394c8;hpb=5802573130c841d10734e1b0dcdb0b13167f9c86 diff --git a/ccan/tdb2/open.c b/ccan/tdb2/open.c index e88c9e69..fec3ef15 100644 --- a/ccan/tdb2/open.c +++ b/ccan/tdb2/open.c @@ -550,17 +550,20 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, /* Clear any features we don't understand. */ if ((open_flags & O_ACCMODE) != O_RDONLY) { hdr.features_used &= TDB_FEATURE_MASK; - if (tdb_write_convert(tdb, offsetof(struct tdb_header, - features_used), - &hdr.features_used, - sizeof(hdr.features_used)) == -1) + ecode = tdb_write_convert(tdb, offsetof(struct tdb_header, + features_used), + &hdr.features_used, + sizeof(hdr.features_used)); + if (ecode != TDB_SUCCESS) goto fail; } tdb_unlock_open(tdb, openlock); /* This make sure we have current map_size and mmap. */ - tdb->methods->oob(tdb, tdb->file->map_size + 1, true); + ecode = tdb->methods->oob(tdb, tdb->file->map_size + 1, true); + if (unlikely(ecode != TDB_SUCCESS)) + goto fail; /* Now it's fully formed, recover if necessary. */ berr = tdb_needs_recovery(tdb);