]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Cleanup lmdb-typed.cc
authorFred Morcos <fred.morcos@open-xchange.com>
Tue, 24 Sep 2024 07:28:17 +0000 (09:28 +0200)
committerFred Morcos <fred.morcos@open-xchange.com>
Tue, 24 Sep 2024 09:21:08 +0000 (11:21 +0200)
ext/lmdb-safe/lmdb-typed.cc

index 1edc8324ff3dda3a215935570ac435ed034ffe88..e9a2d1e2c089e9b47b60dec425d8edfdb6822c9d 100644 (file)
@@ -4,9 +4,10 @@
 unsigned int MDBGetMaxID(MDBRWTransaction& txn, MDBDbi& dbi)
 {
   auto cursor = txn->getRWCursor(dbi);
-  MDBOutVal maxidval, maxcontent;
+  MDBOutVal maxidval{};
+  MDBOutVal maxcontent{};
   unsigned int maxid{0};
-  if (!cursor.get(maxidval, maxcontent, MDB_LAST)) {
+  if (cursor.get(maxidval, maxcontent, MDB_LAST) == 0) {
     maxid = maxidval.getNoStripHeader<unsigned int>();
   }
   return maxid;
@@ -15,15 +16,16 @@ unsigned int MDBGetMaxID(MDBRWTransaction& txn, MDBDbi& dbi)
 unsigned int MDBGetRandomID(MDBRWTransaction& txn, MDBDbi& dbi)
 {
   auto cursor = txn->getRWCursor(dbi);
-  unsigned int id;
+  unsigned int newID = 0;
   for (int attempts = 0; attempts < 20; attempts++) {
-    MDBOutVal key, content;
+    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"
-    id = dns_random(std::numeric_limits<signed int>::max()) + 1;
-    if (cursor.find(MDBInVal(id), key, content)) {
-      return id;
+    newID = dns_random(std::numeric_limits<signed int>::max()) + 1;
+    if (cursor.find(MDBInVal(newID), key, content) != 0) {
+      return newID;
     }
   }
   throw std::runtime_error("MDBGetRandomID() could not assign an unused random ID");