mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-07 15:01:10 +00:00
backport fix from trunk
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/branches/stable@26792 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
a4ee2a9628
commit
c6d085e3ae
2 changed files with 24 additions and 15 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2008-07-17 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* Source/Additions/GSCategories.m: littleEndian() fix to work on
|
||||||
|
systems with other word sizes.
|
||||||
|
|
||||||
2008-07-05 Richard Frith-Macdonald <rfm@gnu.org>
|
2008-07-05 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* Version 1.16.3
|
* Version 1.16.3
|
||||||
|
|
|
@ -392,23 +392,27 @@ static void MD5Transform (uint32_t buf[4], uint32_t const in[16]);
|
||||||
*/
|
*/
|
||||||
static void littleEndian (void *buf, unsigned words)
|
static void littleEndian (void *buf, unsigned words)
|
||||||
{
|
{
|
||||||
uint32_t *ptr = (uint32_t*)buf;
|
if (NSHostByteOrder() == NS_BigEndian)
|
||||||
|
{
|
||||||
|
while (words-- > 0)
|
||||||
|
{
|
||||||
|
union swap {
|
||||||
|
uint32_t num;
|
||||||
|
uint8_t byt[4];
|
||||||
|
} tmp;
|
||||||
|
uint8_t b0;
|
||||||
|
uint8_t b1;
|
||||||
|
|
||||||
#if (INT_MAX == 2147483647)
|
tmp.num = ((uint32_t*)buf)[words];
|
||||||
do
|
b0 = tmp.byt[0];
|
||||||
{
|
b1 = tmp.byt[1];
|
||||||
*ptr = NSSwapHostIntToLittle(*ptr);
|
tmp.byt[0] = tmp.byt[3];
|
||||||
ptr++;
|
tmp.byt[1] = tmp.byt[2];
|
||||||
|
tmp.byt[2] = b1;
|
||||||
|
tmp.byt[3] = b0;
|
||||||
|
((uint32_t*)buf)[words] = tmp.num;
|
||||||
}
|
}
|
||||||
while (--words);
|
|
||||||
#else
|
|
||||||
do
|
|
||||||
{
|
|
||||||
*ptr = NSSwapHostLongToLittle(*ptr);
|
|
||||||
ptr++;
|
|
||||||
}
|
}
|
||||||
while (--words);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue