]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
burtleCI: add std::string wrapper
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Fri, 20 Jun 2025 08:19:38 +0000 (10:19 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Fri, 20 Jun 2025 09:50:41 +0000 (11:50 +0200)
pdns/burtle.hh
pdns/dnsname.cc
pdns/dnsname.hh

index 53f8b8d017b1af40f7cfbd553df4cd65162668a7..65d128835450cd7830607d10f7baec82f52fb9bc 100644 (file)
@@ -178,3 +178,8 @@ inline uint32_t burtleCI(const unsigned char* k, uint32_t length, uint32_t initv
   /*-------------------------------------------- report the result */
   return c;
 }
+
+inline uint32_t burtleCI(const std::string &k, uint32_t initval)
+{
+  return burtleCI(reinterpret_cast<const unsigned char *>(k.data()), k.length(), initval);
+}
index 13c5cdb19e0b3826f2928f0bd2c72849cbb8e510..dfc38417874154e2b057d80b7b47f9180b757a2e 100644 (file)
@@ -847,7 +847,7 @@ std::string ZoneName::toStringFull(const std::string& separator, const bool trai
 size_t ZoneName::hash(size_t init) const
 {
   if (!d_variant.empty()) {
-    init = burtleCI(reinterpret_cast<const unsigned char *>(d_variant.data()), d_variant.length(), init); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast): can't static_cast because of sign difference
+    init = burtleCI(d_variant, init); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast): can't static_cast because of sign difference
   }
 
   return d_name.hash(init);
index 630e9be4d8511e791baf685bbe186d597586e30d..6880fdfd45e0ef810b6a0dd5e8b5e740a850e876 100644 (file)
@@ -153,7 +153,7 @@ public:
   void trimToLabels(unsigned int);
   size_t hash(size_t init=0) const
   {
-    return burtleCI((const unsigned char*)d_storage.c_str(), d_storage.size(), init);
+    return burtleCI(d_storage, init);
   }
   DNSName& operator+=(const DNSName& rhs)
   {