diff --git a/filters.cpp b/filters.cpp index 47a91a33..9f4308ba 100644 --- a/filters.cpp +++ b/filters.cpp @@ -509,7 +509,8 @@ size_t RandomNumberSink::Put2(const byte *begin, size_t length, int messageEnd, size_t ArraySink::Put2(const byte *begin, size_t length, int messageEnd, bool blocking) { - memcpy(m_buf+m_total, begin, STDMIN(length, SaturatingSubtract(m_size, m_total))); + if (m_buf+m_total != begin) + memcpy(m_buf+m_total, begin, STDMIN(length, SaturatingSubtract(m_size, m_total))); m_total += length; return 0; } diff --git a/words.h b/words.h index fc835591..d5fda71d 100644 --- a/words.h +++ b/words.h @@ -20,7 +20,8 @@ inline void SetWords(word *r, word a, size_t n) inline void CopyWords(word *r, const word *a, size_t n) { - memcpy(r, a, n*WORD_SIZE); + if (r != a) + memcpy(r, a, n*WORD_SIZE); } inline void XorWords(word *r, const word *a, const word *b, size_t n) diff --git a/zdeflate.cpp b/zdeflate.cpp index 426e438a..ae5e1a76 100644 --- a/zdeflate.cpp +++ b/zdeflate.cpp @@ -221,6 +221,7 @@ Deflator::Deflator(BufferedTransformation *attachment, int deflateLevel, int log Deflator::Deflator(const NameValuePairs ¶meters, BufferedTransformation *attachment) : LowFirstBitWriter(attachment) + , m_deflateLevel(-1) { InitializeStaticEncoders(); IsolatedInitialize(parameters);