Changeset - r27440:a8ea984125b3
[Not reviewed]
master
0 1 0
PeterN - 18 months ago 2023-05-26 18:17:54
peter1138@openttd.org
Fix d9a04ba446: Ensure MD5Hash is initialized. (#10876)

Not all instances need to be initialized as often they are copied or
written to, but doing all ensures no surprises.

Move the ^= operator to MD5Hash while we're at it.
1 file changed with 13 insertions and 13 deletions:
0 comments (0 inline, 0 general)
src/3rdparty/md5/md5.h
Show inline comments
 
@@ -54,26 +54,26 @@
 
#define MD5_INCLUDED
 

	
 
/** The number of bytes in a MD5 hash. */
 
static const size_t MD5_HASH_BYTES = 16;
 

	
 
/** Container for storing a MD5 hash/checksum/digest. */
 
using MD5Hash = std::array<byte, MD5_HASH_BYTES>;
 
struct MD5Hash : std::array<byte, MD5_HASH_BYTES> {
 
	MD5Hash() : std::array<byte, MD5_HASH_BYTES>{} {}
 

	
 
/**
 
 * Exclusively-or one hash into another hash.
 
 * @param lhs The hash to exclusively-or into.
 
 * @param rhs The hash to exclusively-or with.
 
 * @return Reference to \c lhs hash.
 
 */
 
inline MD5Hash &operator^=(MD5Hash &lhs, const MD5Hash &rhs)
 
{
 
	for (size_t i = 0; i < lhs.size(); i++) lhs[i] ^= rhs[i];
 
	return lhs;
 
}
 

	
 
	/**
 
	 * Exclusively-or the given hash into this hash.
 
	 * @param other The other hash.
 
	 * @return Reference to this hash.
 
	 */
 
	MD5Hash &operator^=(const MD5Hash &other)
 
	{
 
		for (size_t i = 0; i < size(); i++) this->operator[](i) ^= other[i];
 
		return *this;
 
	}
 
};
 

	
 
struct Md5 {
 
private:
 
	uint32 count[2]; ///< message length in bits, lsw first
 
	uint32 abcd[4];  ///< digest buffer
 
	uint8 buf[64];   ///< accumulate block
0 comments (0 inline, 0 general)