summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--filters.cpp3
-rw-r--r--words.h3
-rw-r--r--zdeflate.cpp1
3 files changed, 5 insertions, 2 deletions
diff --git a/filters.cpp b/filters.cpp
index 47a91a3..9f4308b 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 fc83559..d5fda71 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 426e438..ae5e1a7 100644
--- a/zdeflate.cpp
+++ b/zdeflate.cpp
@@ -221,6 +221,7 @@ Deflator::Deflator(BufferedTransformation *attachment, int deflateLevel, int log
Deflator::Deflator(const NameValuePairs &parameters, BufferedTransformation *attachment)
: LowFirstBitWriter(attachment)
+ , m_deflateLevel(-1)
{
InitializeStaticEncoders();
IsolatedInitialize(parameters);