зеркало из https://github.com/mozilla/pjs.git
Bug 544512 - Misaligned accesses in uconv causes Bus Error on sparc and word wrapping on arm. r=smontagu
This commit is contained in:
Родитель
bbd884c24f
Коммит
4094557b13
|
@ -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) \
|
||||
|
|
Загрузка…
Ссылка в новой задаче