Use crc32 calculation from zlib instead of boost

This commit is contained in:
Yuriy Skalko 2020-12-26 21:23:44 +02:00
parent 3e167f9fe7
commit 197ea63631
3 changed files with 16 additions and 15 deletions

View File

@ -608,8 +608,8 @@ unsigned long FileName::checksum() const
return 0;
}
char * beg = static_cast<char*>(mm);
char * end = beg + info.st_size;
unsigned char * beg = static_cast<unsigned char*>(mm);
unsigned char * end = beg + info.st_size;
result = support::checksum(beg, end);

View File

@ -9,9 +9,10 @@
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "support/checksum.h"
#include "boost/crc.hpp"
#include <algorithm>
#include <zlib.h>
namespace lyx {
@ -19,9 +20,8 @@ namespace support {
unsigned long checksum(std::string const & s)
{
boost::crc_32_type crc;
crc.process_bytes(s.c_str(), s.size());
return crc.checksum();
auto p = reinterpret_cast<unsigned char const *>(s.c_str());
return crc32(0, p, s.size());
}
unsigned long checksum(std::ifstream & ifs)
@ -29,16 +29,17 @@ unsigned long checksum(std::ifstream & ifs)
std::istreambuf_iterator<char> beg(ifs);
std::istreambuf_iterator<char> end;
boost::crc_32_type crc;
crc = for_each(beg, end, crc);
return crc.checksum();
unsigned long sum = 0;
for (auto & it = beg; beg != end; ++it) {
unsigned char c = *it;
sum = crc32(sum, &c, 1);
}
return sum;
}
unsigned long checksum(char const * beg, char const * end)
unsigned long checksum(unsigned char const * beg, unsigned char const * end)
{
boost::crc_32_type crc;
crc.process_block(beg, end);
return crc.checksum();
return crc32(0, beg, end - beg);
}
} // namespace support

View File

@ -21,7 +21,7 @@ namespace support {
unsigned long checksum(std::string const & s);
unsigned long checksum(std::ifstream & ifs);
unsigned long checksum(char const * beg, char const * end);
unsigned long checksum(unsigned char const * beg, unsigned char const * end);
} // namespace support