}
/* 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 */
* then the TDB_DATA will have zero length but
* a non-zero pointer
*/
-static TDB_DATA do_tdb_fetch(struct tdb_context *tdb, TDB_DATA key)
+static TDB_DATA _tdb_fetch(struct tdb_context *tdb, TDB_DATA key)
{
tdb_off_t rec_ptr;
struct list_struct rec;
TDB_DATA tdb_fetch(struct tdb_context *tdb, TDB_DATA key)
{
- TDB_DATA ret = do_tdb_fetch(tdb, key);
+ TDB_DATA ret = _tdb_fetch(tdb, key);
tdb_trace_1rec_retrec(tdb, "tdb_fetch", key, ret);
return ret;
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);
return 0;
}
-static int _tdb_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf,
- int flag, uint32_t hash)
+static int _tdb_store(struct tdb_context *tdb, TDB_DATA key,
+ TDB_DATA dbuf, int flag, uint32_t hash)
{
struct list_struct rec;
tdb_off_t rec_ptr;
if (tdb_lock(tdb, BUCKET(hash), F_WRLCK) == -1)
return -1;
- dbuf = do_tdb_fetch(tdb, key);
+ dbuf = _tdb_fetch(tdb, key);
if (dbuf.dptr == NULL) {
dbuf.dptr = (unsigned char *)malloc(new_dbuf.dsize);