cmCryptoHash: Increase alignment of HashFile buffer
The SHA512_Update implementation accesses input data via 64-bit integers. This requires alignment of the input buffer on some architectures. Align our stack-allocated buffer for file content to satisfy this requirement.
This commit is contained in:
parent
5dd8c01429
commit
75994d953e
|
@ -54,8 +54,8 @@ std::string cmCryptoHash::HashFile(const char* file)
|
||||||
this->Initialize();
|
this->Initialize();
|
||||||
|
|
||||||
// Should be efficient enough on most system:
|
// Should be efficient enough on most system:
|
||||||
const int bufferSize = 4096;
|
cm_sha2_uint64_t buffer[512];
|
||||||
char buffer[bufferSize];
|
char* buffer_c = reinterpret_cast<char*>(buffer);
|
||||||
unsigned char const* buffer_uc =
|
unsigned char const* buffer_uc =
|
||||||
reinterpret_cast<unsigned char const*>(buffer);
|
reinterpret_cast<unsigned char const*>(buffer);
|
||||||
// This copy loop is very sensitive on certain platforms with
|
// This copy loop is very sensitive on certain platforms with
|
||||||
|
@ -65,7 +65,7 @@ std::string cmCryptoHash::HashFile(const char* file)
|
||||||
// error occurred. Therefore, the loop should be safe everywhere.
|
// error occurred. Therefore, the loop should be safe everywhere.
|
||||||
while(fin)
|
while(fin)
|
||||||
{
|
{
|
||||||
fin.read(buffer, bufferSize);
|
fin.read(buffer_c, sizeof(buffer));
|
||||||
if(int gcount = static_cast<int>(fin.gcount()))
|
if(int gcount = static_cast<int>(fin.gcount()))
|
||||||
{
|
{
|
||||||
this->Append(buffer_uc, gcount);
|
this->Append(buffer_uc, gcount);
|
||||||
|
|
Loading…
Reference in New Issue