Bug 544512 - Misaligned accesses in uconv causes Bus Error on sparc and word wrapping on arm. r=smontagu

This commit is contained in:
Mike Hommey 2010-03-06 16:35:11 +01:00
Родитель bbd884c24f
Коммит 4094557b13
2 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -112,7 +112,11 @@ UTF16ConvertToUnicode(PRUint8& aState, PRUint8& aOddByte,
if (dest == destEnd)
goto error;
#if !defined(__sparc__) && !defined(__arm__)
u = *(const PRUnichar*)src;
#else
memcpy(&u, src, 2);
#endif
src += 2;
have_codepoint:

Просмотреть файл

@ -46,7 +46,7 @@
//----------------------------------------------------------------------
// static functions and macro definition common to nsUTF32(BE|LE)ToUnicode
#ifdef IS_BIG_ENDIAN
#if defined(IS_BIG_ENDIAN) || defined(__arm__)
#define LE_STRING_TO_UCS4(s) \
(PRUint8(*(s)) | (PRUint8(*((s) + 1)) << 8) | \
(PRUint8(*((s) + 2)) << 16) | (PRUint8(*((s) + 3)) << 24))
@ -54,7 +54,7 @@
#define LE_STRING_TO_UCS4(s) (*(PRUint32*) (s))
#endif
#ifdef IS_BIG_ENDIAN
#if defined(IS_BIG_ENDIAN) && !defined(__sparc__)
#define BE_STRING_TO_UCS4(s) (*(PRUint32*) (s))
#else
#define BE_STRING_TO_UCS4(s) \