X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb%2Ftdb.c;h=cb2af49f8f9f7b8bb29c4f86d0624712579543ea;hp=3e663345e60c5f9ebc14e1d41813f39a7d3bc4bd;hb=bcf7916c5d694858766869dfd570e525127154a6;hpb=f9757c15a7b61cd4042c060b9fd0e069cb2c31df diff --git a/ccan/tdb/tdb.c b/ccan/tdb/tdb.c index 3e663345..cb2af49f 100644 --- a/ccan/tdb/tdb.c +++ b/ccan/tdb/tdb.c @@ -98,12 +98,14 @@ static tdb_off_t tdb_find(struct tdb_context *tdb, TDB_DATA key, uint32_t hash, } /* detect tight infinite loop */ if (rec_ptr == r->next) { + tdb->ecode = TDB_ERR_CORRUPT; TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_find: loop detected.\n")); - return TDB_ERRCODE(TDB_ERR_CORRUPT, 0); + return 0; } rec_ptr = r->next; } - return TDB_ERRCODE(TDB_ERR_NOEXIST, 0); + tdb->ecode = TDB_ERR_NOEXIST; + return 0; } /* As tdb_find, but if you succeed, keep the lock */ @@ -217,7 +219,8 @@ int tdb_parse_record(struct tdb_context *tdb, TDB_DATA key, if (!(rec_ptr = tdb_find_lock_hash(tdb,key,hash,F_RDLCK,&rec))) { tdb_trace_1rec_ret(tdb, "tdb_parse_record", key, -TDB_ERR_NOEXIST); - return TDB_ERRCODE(TDB_ERR_NOEXIST, 0); + tdb->ecode = TDB_ERR_NOEXIST; + return 0; } tdb_trace_1rec_ret(tdb, "tdb_parse_record", key, 0);