From 8c4511cbc206dfc742771d114813ce7ba1b254c8 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 25 Mar 2004 03:50:32 +0000 Subject: [PATCH] fix endianess stuff... in amx SVN revision: 9458 --- legacy/embryo/src/lib/embryo_amx.c | 1 + legacy/embryo/src/lib/embryo_private.h | 29 ++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/legacy/embryo/src/lib/embryo_amx.c b/legacy/embryo/src/lib/embryo_amx.c index ff1fe35039..b455eaa8b5 100644 --- a/legacy/embryo/src/lib/embryo_amx.c +++ b/legacy/embryo/src/lib/embryo_amx.c @@ -145,6 +145,7 @@ _embryo_program_init(Embryo_Program *ep, void *code) unsigned short *len; len = (unsigned short*)((unsigned char*)ep->code + hdr->nametable); + embryo_swap_16((unsigned short *)len); if (*len > sNAMEMAX) return 0; } if (hdr->stp <= 0) return 0; diff --git a/legacy/embryo/src/lib/embryo_private.h b/legacy/embryo/src/lib/embryo_private.h index 6b46947994..0be54af5e3 100644 --- a/legacy/embryo/src/lib/embryo_private.h +++ b/legacy/embryo/src/lib/embryo_private.h @@ -157,15 +157,26 @@ enum _Embryo_Opcode EMBRYO_OP_NUM_OPCODES }; -#define NUMENTRIES(hdr,field,nextfield) \ - (int)(((hdr)->nextfield - (hdr)->field) / (hdr)->defsize) -#define GETENTRY(hdr,table,index) \ - (Embryo_Func_Stub *)((unsigned char*)(hdr) + \ - (int)(hdr)->table + index * (hdr)->defsize) -#define GETENTRYNAME(hdr,entry) \ - (((hdr)->defsize == 2 * sizeof(unsigned int)) \ - ? (char *)((unsigned char*)(hdr) + *((unsigned int *)(entry) + 1)) \ - : (entry)->name) +#define NUMENTRIES(hdr, field, nextfield) \ +(int)(((hdr)->nextfield - (hdr)->field) / (hdr)->defsize) +#define GETENTRY(hdr, table, index) \ +(Embryo_Func_Stub *)((unsigned char*)(hdr) + \ +(int)(hdr)->table + index * (hdr)->defsize) +#ifdef WORDS_BIGENDIAN +# define GETENTRYNAME(hdr, entry) \ +(((hdr)->defsize == 2 * sizeof(unsigned int)) \ +? (char *)((unsigned char*)(hdr) + *((unsigned int *)(entry) + 1)) \ +: (entry)->name) +#else +static int __inline __entryswap32(int v) \ +{int vv; vv = v; embryo_swap_32((unsigned int *)&vv); return vv;} +# define GETENTRYNAME(hdr, entry) \ +(((hdr)->defsize == 2 * sizeof(unsigned int)) \ +? (char *)((unsigned char*)(hdr) + \ +__entryswap32(*((unsigned int *)(entry) + 1))) \ +: (entry)->name) +#endif + #define CUR_FILE_VERSION 7 /* current file version; also the current Embryo_Program version */ #define MIN_FILE_VERSION 7 /* lowest supported file format version for the current Embryo_Program version */ #define MIN_AMX_VERSION 7 /* minimum Embryo_Program version needed to support the current file format */