Index: base/metrics/metrics_hashes.cc |
diff --git a/base/metrics/metrics_hashes.cc b/base/metrics/metrics_hashes.cc |
index 5672b06decb2ef2aa51efb5b705692ceaaf4794e..9b604011ff3d4dee26720ed559e800ad79e5c249 100644 |
--- a/base/metrics/metrics_hashes.cc |
+++ b/base/metrics/metrics_hashes.cc |
@@ -4,6 +4,7 @@ |
#include "base/metrics/metrics_hashes.h" |
+#include "base/debug/alias.h" |
#include "base/logging.h" |
#include "base/md5.h" |
#include "base/sys_byteorder.h" |
@@ -15,16 +16,42 @@ namespace { |
// Converts the 8-byte prefix of an MD5 hash into a uint64_t value. |
inline uint64_t DigestToUInt64(const base::MD5Digest& digest) { |
uint64_t value; |
- DCHECK_GE(sizeof(digest.a), sizeof(value)); |
+ CHECK_GE(sizeof(digest.a), sizeof(value)); |
memcpy(&value, digest.a, sizeof(value)); |
- return base::NetToHost64(value); |
+ uint64_t hash = base::NetToHost64(value); |
+ CHECK_NE(0U, hash); |
+ base::debug::Alias(&hash); |
+ base::debug::Alias(&value); |
+ base::debug::Alias(&digest); |
+ return hash; |
} |
} // namespace |
uint64_t HashMetricName(base::StringPiece name) { |
- base::MD5Digest digest; |
+ base::MD5Digest digest = {{ |
+ 0x0F, 0x0E, 0x0D, 0x0C, 0x00, 0x0D, 0x0E, 0x02, |
+ 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0E, 0x0F |
+ }}; |
base::MD5Sum(name.data(), name.size(), &digest); |
+ CHECK( |
+ digest.a[0] != 0x0F || |
+ digest.a[1] != 0x0E || |
+ digest.a[2] != 0x0D || |
+ digest.a[3] != 0x0C || |
+ digest.a[4] != 0x00 || |
+ digest.a[5] != 0x0D || |
+ digest.a[6] != 0x0E || |
+ digest.a[7] != 0x02 || |
+ digest.a[8] != 0x0D || |
+ digest.a[9] != 0x0E || |
+ digest.a[10] != 0x0A || |
+ digest.a[11] != 0x0D || |
+ digest.a[12] != 0x0B || |
+ digest.a[13] != 0x0E || |
+ digest.a[14] != 0x0E || |
+ digest.a[15] != 0x0F); |
+ base::debug::Alias(&name); |
return DigestToUInt64(digest); |
} |