From 756500fee5c95fb23bcf9973a05f36deb33612f0 Mon Sep 17 00:00:00 2001 From: Per Hedbor <ph@opera.com> Date: Fri, 11 Aug 1995 21:24:01 +0200 Subject: [PATCH] Core in EXTRACT_UCHAR. Rev: src/port.c:1.2 Rev: src/port.h:1.2 --- src/port.c | 17 ++++++++++++++--- src/port.h | 17 ++++++++++++++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/port.c b/src/port.c index f7b7414159..4ec365daa6 100644 --- a/src/port.c +++ b/src/port.c @@ -577,16 +577,27 @@ int VFPRINTF(FILE *f,char *s,va_list args) #if defined(DEBUG) && !defined(HANDLES_UNALIGNED_MEMORY_ACCESS) unsigned INT16 EXTRACT_UWORD(unsigned char *p) { - return (EXTRACT_UCHAR(p)<<8) + EXTRACT_UCHAR(p+1); + unsigned INT16 a; + ((unsigned char *)&a)[0]=p[0]; + ((unsigned char *)&a)[1]=p[1]; + return a; } INT16 EXTRACT_WORD(unsigned char *p) { - return (EXTRACT_CHAR(p)<<8) | EXTRACT_UCHAR(p+1); + INT16 a; + ((unsigned char *)&a)[0]=p[0]; + ((unsigned char *)&a)[1]=p[1]; + return a; } INT32 EXTRACT_INT(unsigned char *p) { - return (EXTRACT_WORD(p)<<16) | EXTRACT_UWORD(p+2); + INT16 a; + ((unsigned char *)&a)[0]=p[0]; + ((unsigned char *)&a)[1]=p[1]; + ((unsigned char *)&a)[2]=p[2]; + ((unsigned char *)&a)[3]=p[3]; + return a; } #endif diff --git a/src/port.h b/src/port.h index d956ae9a1d..f00de8a179 100644 --- a/src/port.h +++ b/src/port.h @@ -142,17 +142,28 @@ INT32 EXTRACT_INT(unsigned char *p); #else static INLINE unsigned INT16 EXTRACT_UWORD(unsigned char *p) { - return (EXTRACT_UCHAR(p)<<8) + EXTRACT_UCHAR(p+1); + unsigned INT16 a; + ((unsigned char *)&a)[0]=p[0]; + ((unsigned char *)&a)[1]=p[1]; + return a; } static INLINE INT16 EXTRACT_WORD(unsigned char *p) { - return (EXTRACT_CHAR(p)<<8) | EXTRACT_UCHAR(p+1); + INT16 a; + ((unsigned char *)&a)[0]=p[0]; + ((unsigned char *)&a)[1]=p[1]; + return a; } static INLINE INT32 EXTRACT_INT(unsigned char *p) { - return (EXTRACT_WORD(p)<<16) | EXTRACT_UWORD(p+2); + INT16 a; + ((unsigned char *)&a)[0]=p[0]; + ((unsigned char *)&a)[1]=p[1]; + ((unsigned char *)&a)[2]=p[2]; + ((unsigned char *)&a)[3]=p[3]; + return a; } #endif #endif -- GitLab