]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Avoid a double lookup when UMEM state debugging is enabled 14429/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 12 Jul 2024 09:49:44 +0000 (11:49 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 12 Jul 2024 09:49:44 +0000 (11:49 +0200)
pdns/xsk.cc

index 2d4ac83a4905804b9f023b9aa1d5523448e9c8a2..5851f1b9b79ee341f35851420895cd598e464123 100644 (file)
@@ -87,15 +87,16 @@ LockGuarded<std::map<std::pair<void*, uint64_t>, UmemEntryStatus>> s_umems;
 void checkUmemIntegrity(const char* function, int line, std::shared_ptr<LockGuarded<vector<uint64_t>>> vect, uint64_t offset, const std::set<UmemEntryStatus::Status>& validStatuses, UmemEntryStatus::Status newStatus)
 {
   auto umems = s_umems.lock();
-  if (validStatuses.count(umems->at({vect.get(), offset}).status) == 0) {
-    std::cerr << "UMEM integrity check failed at " << function << ": " << line << ": status of " << (void*)vect.get() << ", " << offset << " is " << static_cast<int>(umems->at({vect.get(), offset}).status) << ", expected: ";
+  auto& umemState = umems->at({vect.get(), offset});
+  if (validStatuses.count(umemState.status) == 0) {
+    std::cerr << "UMEM integrity check failed at " << function << ": " << line << ": status of " << (void*)vect.get() << ", " << offset << " is " << static_cast<int>(umemState.status) << ", expected: ";
     for (const auto status : validStatuses) {
       std::cerr << static_cast<int>(status) << " ";
     }
     std::cerr << std::endl;
     abort();
   }
-  (*umems)[{vect.get(), offset}].status = newStatus;
+  umemState.status = newStatus;
 }
 }
 #endif /* DEBUG_UMEM */