+++ /dev/null
-diff -ur mhash-0.9.9.orig/lib/stdfns.c mhash-0.9.9/lib/stdfns.c
---- mhash-0.9.9.orig/lib/stdfns.c Wed Apr 4 21:18:42 2007
-+++ mhash-0.9.9/lib/stdfns.c Mon May 28 16:08:38 2007
-@@ -152,12 +152,23 @@
- }\r
- }\r
- \r
-+static void\r
-+mutils_memset8(void *s, __const mutils_word8 c, __const mutils_word32 n)\r
-+{\r
-+ mutils_word8 *stmp = s;\r
-+ mutils_word32 i;\r
-+\r
-+ for (i = 0; i < n; i++, stmp++)\r
-+ {\r
-+ *stmp = c;\r
-+ }\r
-+}\r
-+\r
- WIN32DLL_DEFINE\r
- void\r
- mutils_memset(void *s, __const mutils_word8 c, __const mutils_word32 n)\r
- {\r
-- mutils_word8 *stmp;\r
-- mutils_word32 *ltmp = (mutils_word32 *) s;\r
-+ mutils_word32 *ltmp;\r
- mutils_word32 lump;\r
- mutils_word32 i;\r
- mutils_word32 words;\r
-@@ -168,10 +179,22 @@
- return;\r
- }\r
- \r
-+ if (n < 16)\r
-+ {\r
-+ return mutils_memset8(s, c, n);\r
-+ }\r
-+\r
-+ /* unaligned portion at beginning */\r
-+ remainder = (-(mutils_word32)s) & 0x3;\r
-+ mutils_memset8(s, c, remainder);\r
-+\r
-+ /* aligned words in the middle */\r
-+ ltmp = (mutils_word32 *) (s + remainder);\r
-+\r
- lump = (c << 24) + (c << 16) + (c << 8) + c;\r
- \r
-- words = n >> 2;\r
-- remainder = n - (words << 2);\r
-+ words = (n - remainder) >> 2;\r
-+ remainder = n - remainder - (words << 2);\r
- \r
- for (i = 0; i < words; i++, ltmp++)\r
- {\r
-@@ -178,12 +201,8 @@
- *ltmp = lump;\r
- }\r
- \r
-- stmp = (mutils_word8 *) ltmp;\r
--\r
-- for (i = 0; i < remainder; i++, stmp++)\r
-- {\r
-- *stmp = c;\r
-- }\r
-+ /* unaligned portion at end */\r
-+ return mutils_memset8(ltmp, c, remainder);\r
- }\r
- \r
- static void\r
-@@ -275,6 +294,9 @@
- mutils_word32 *buffer;\r
- mutils_word32 *ptrIn;\r
- mutils_word32 *ptrOut;\r
-+ mutils_word8 *ptr8In;\r
-+ mutils_word8 *ptr8Out;\r
-+ mutils_word8 tmp8;\r
- mutils_word32 count = n * 4;\r
- \r
- if (destructive == MUTILS_FALSE)\r
-@@ -295,10 +317,36 @@
- * data on a little-endian machine.\r
- */\r
- \r
-- for (loop = 0, ptrIn = x, ptrOut = buffer; loop < n; loop++, ptrOut++, ptrIn++)\r
-+ if ((mutils_word32)x & 0x3)\r
- {\r
-- *ptrOut = mutils_lend32(*ptrIn);\r
-+ ptr8In = (mutils_word8 *) x;\r
-+ ptr8Out = (mutils_word8 *) buffer;\r
-+ for (loop = 0; loop < n; loop++)\r
-+ {\r
-+#ifdef WORDS_BIGENDIAN\r
-+ tmp8 = ptr8In[0];\r
-+ ptr8Out[0] = ptr8In[3];\r
-+ ptr8Out[3] = tmp8;\r
-+ tmp8 = ptr8In[1];\r
-+ ptr8Out[1] = ptr8In[2];\r
-+ ptr8Out[2] = tmp8;\r
-+#else\r
-+ ptr8Out[0] = ptr8In[0];\r
-+ ptr8Out[1] = ptr8In[1];\r
-+ ptr8Out[2] = ptr8In[2];\r
-+ ptr8Out[3] = ptr8In[3];\r
-+#endif\r
-+ ptr8Out += 4;\r
-+ ptr8In += 4;\r
-+ }\r
- }\r
-+ else\r
-+ {\r
-+ for (loop = 0, ptrIn = x, ptrOut = buffer; loop < n; loop++, ptrOut++, ptrIn++)\r
-+ {\r
-+ *ptrOut = mutils_lend32(*ptrIn);\r
-+ }\r
-+ }\r
- \r
- return(buffer);\r
- }\r