From: Yuriy Skalko Date: Sat, 26 Dec 2020 19:23:44 +0000 (+0200) Subject: Use crc32 calculation from zlib instead of boost X-Git-Tag: 2.4.0-alpha3~426 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=197ea636;p=lyx.git Use crc32 calculation from zlib instead of boost --- diff --git a/src/support/FileName.cpp b/src/support/FileName.cpp index 3d31c7d37c..5295741e1a 100644 --- a/src/support/FileName.cpp +++ b/src/support/FileName.cpp @@ -608,8 +608,8 @@ unsigned long FileName::checksum() const return 0; } - char * beg = static_cast(mm); - char * end = beg + info.st_size; + unsigned char * beg = static_cast(mm); + unsigned char * end = beg + info.st_size; result = support::checksum(beg, end); diff --git a/src/support/checksum.cpp b/src/support/checksum.cpp index 79ef955ce3..2249ad14e0 100644 --- a/src/support/checksum.cpp +++ b/src/support/checksum.cpp @@ -9,9 +9,10 @@ * Full author contact details are available in file CREDITS. */ +#include #include "support/checksum.h" -#include "boost/crc.hpp" -#include + +#include 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(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 beg(ifs); std::istreambuf_iterator 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 diff --git a/src/support/checksum.h b/src/support/checksum.h index ab14339765..0533c57d79 100644 --- a/src/support/checksum.h +++ b/src/support/checksum.h @@ -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