From fd6c3e3c03c6257c443d4913b875f3c1b48f2175 Mon Sep 17 00:00:00 2001 From: Fred Morcos Date: Wed, 16 Oct 2024 13:31:09 +0200 Subject: [PATCH] Use uint32_t in MDBGetMaxID and MDBGetRandomID --- ext/lmdb-safe/lmdb-typed.cc | 15 ++++++++------- ext/lmdb-safe/lmdb-typed.hh | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ext/lmdb-safe/lmdb-typed.cc b/ext/lmdb-safe/lmdb-typed.cc index e9a2d1e2c0..ff63ea8f2c 100644 --- a/ext/lmdb-safe/lmdb-typed.cc +++ b/ext/lmdb-safe/lmdb-typed.cc @@ -1,28 +1,29 @@ #include "lmdb-typed.hh" #include "pdns/dns_random.hh" -unsigned int MDBGetMaxID(MDBRWTransaction& txn, MDBDbi& dbi) +uint32_t MDBGetMaxID(MDBRWTransaction& txn, MDBDbi& dbi) { auto cursor = txn->getRWCursor(dbi); MDBOutVal maxidval{}; MDBOutVal maxcontent{}; - unsigned int maxid{0}; + uint32_t maxid{0}; if (cursor.get(maxidval, maxcontent, MDB_LAST) == 0) { - maxid = maxidval.getNoStripHeader(); + maxid = maxidval.getNoStripHeader(); } return maxid; } -unsigned int MDBGetRandomID(MDBRWTransaction& txn, MDBDbi& dbi) +uint32_t MDBGetRandomID(MDBRWTransaction& txn, MDBDbi& dbi) { auto cursor = txn->getRWCursor(dbi); - unsigned int newID = 0; + uint32_t newID = 0; for (int attempts = 0; attempts < 20; attempts++) { MDBOutVal key{}; MDBOutVal content{}; - // dns_random generates a random number in [0..signed_int_max-1]. We add 1 to avoid 0 and allow type_max. - // 0 is avoided because the put() interface uses it to mean "please allocate a number for me" + // dns_random generates a random number in [0..signed_int_max-1]. We add 1 to avoid 0 + // and allow type_max. 0 is avoided because the put() interface uses it to mean + // "please allocate a number for me". newID = dns_random(std::numeric_limits::max()) + 1; if (cursor.find(MDBInVal(newID), key, content) != 0) { return newID; diff --git a/ext/lmdb-safe/lmdb-typed.hh b/ext/lmdb-safe/lmdb-typed.hh index a55f67d63a..35cdaf1e28 100644 --- a/ext/lmdb-safe/lmdb-typed.hh +++ b/ext/lmdb-safe/lmdb-typed.hh @@ -35,13 +35,13 @@ using LmdbIdVec = std::vector; * Return the highest ID used in a database. Returns 0 for an empty DB. This makes us * start everything at ID=1, which might make it possible to treat id 0 as special. */ -unsigned int MDBGetMaxID(MDBRWTransaction& txn, MDBDbi& dbi); +uint32_t MDBGetMaxID(MDBRWTransaction& txn, MDBDbi& dbi); /** * Return a randomly generated ID that is unique and not zero. May throw if the database * is very full. */ -unsigned int MDBGetRandomID(MDBRWTransaction& txn, MDBDbi& dbi); +uint32_t MDBGetRandomID(MDBRWTransaction& txn, MDBDbi& dbi); /** * This is our serialization interface. It can be specialized for other types. -- 2.47.2