summaryrefslogtreecommitdiff
path: root/misc.h
diff options
context:
space:
mode:
authorweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2008-11-21 03:05:32 +0000
committerweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2008-11-21 03:05:32 +0000
commit260b002fc017c4bf24ec72c4739d11babe9e1a99 (patch)
tree1b3cabd0bc88d30dc744786c7212761df853a716 /misc.h
parentfed5890194f50d587a9dc57f20d89e3369af125a (diff)
downloadcryptopp-260b002fc017c4bf24ec72c4739d11babe9e1a99.tar.gz
fixes for GCC 4.3.2 (reports from Chris Morgan and DiegoT)
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@422 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'misc.h')
-rw-r--r--misc.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/misc.h b/misc.h
index 341476c..5c3a6d1 100644
--- a/misc.h
+++ b/misc.h
@@ -166,6 +166,16 @@ inline void memmove_s(void *dest, size_t sizeInBytes, const void *src, size_t co
}
#endif
+inline void * memset_z(void *ptr, int value, size_t num)
+{
+// avoid extranous warning on GCC 4.3.2 Ubuntu 8.10
+#if CRYPTOPP_GCC_VERSION >= 30001
+ if (__builtin_constant_p(num) && num==0)
+ return ptr;
+#endif
+ return memset(ptr, value, num);
+}
+
// can't use std::min or std::max in MSVC60 or Cygwin 1.1.0
template <class T> inline const T& STDMIN(const T& a, const T& b)
{
@@ -797,7 +807,7 @@ inline void GetUserKey(ByteOrder order, T *out, size_t outlen, const byte *in, s
const size_t U = sizeof(T);
assert(inlen <= outlen*U);
memcpy(out, in, inlen);
- memset((byte *)out+inlen, 0, outlen*U-inlen);
+ memset_z((byte *)out+inlen, 0, outlen*U-inlen);
ConditionalByteReverse(order, out, out, RoundUpToMultipleOf(inlen, U));
}