diff --git a/source/amx/amx.c b/source/amx/amx.c index 675576f..a8494d2 100644 --- a/source/amx/amx.c +++ b/source/amx/amx.c @@ -860,6 +860,7 @@ static int amx_BrowseRelocate(AMX *amx) amx->flags &= ~AMX_FLAG_BROWSE; amx->flags |= AMX_FLAG_RELOC; + amx->flags |= AMX_FLAG_SYSREQD; if (sysreq_flg & 0x02) amx->flags |= AMX_FLAG_SYSREQN; return AMX_ERR_NONE; diff --git a/source/amx/amx.h b/source/amx/amx.h index beeb127..efd9915 100644 --- a/source/amx/amx.h +++ b/source/amx/amx.h @@ -152,10 +152,16 @@ extern "C" { * this number needs to be incremented. * The file version supported by the JIT may run behind MIN_AMX_VERSION. So * there is an extra constant for it: MAX_FILE_VER_JIT. + * + * For open.mp the file and AMX versions are different, to detect files built + * with the new compiler and `-O2`. This prevents code compiled on the old + * compiler using `-O2`, despite the fact that they are the same. Assembly code + * written on the old compiler can't use the macro ops, and can't detect when + * `-O2` is being used, so a lot of code breaks in that case. */ #define CUR_FILE_VERSION 9 /* current file version; also the current AMX version */ #define MIN_FILE_VERSION 6 /* lowest supported file format version for the current AMX version */ -#define MIN_AMX_VERSION 9 /* minimum AMX version needed to support the current file format */ +#define MIN_AMX_VERSION 10 /* minimum AMX version needed to support the current file format */ #define MAX_FILE_VER_JIT 8 /* file version supported by the JIT */ #define MIN_AMX_VER_JIT 8 /* AMX version supported by the JIT */ @@ -348,6 +354,7 @@ enum { #define AMX_FLAG_COMPACT 0x04 /* compact encoding */ #define AMX_FLAG_SLEEP 0x08 /* script uses the sleep instruction (possible re-entry or power-down mode) */ #define AMX_FLAG_NOCHECKS 0x10 /* no array bounds checking; no BREAK opcodes */ +#define AMX_FLAG_SYSREQD 0x400 /* SYSREQ.D is NOT used */ #define AMX_FLAG_SYSREQN 0x800 /* script new (optimized) version of SYSREQ opcode */ #define AMX_FLAG_NTVREG 0x1000 /* all native functions are registered */ #define AMX_FLAG_JITC 0x2000 /* abstract machine is JIT compiled */ diff --git a/source/compiler/sc2.c b/source/compiler/sc2.c index 62b440e..ad4cb4b 100644 --- a/source/compiler/sc2.c +++ b/source/compiler/sc2.c @@ -1450,7 +1450,7 @@ static int command(void) /* write parameter (if any) */ while (*lptr<=' ' && *lptr!='\0') lptr++; - if (*lptr!='\0') { + while (*lptr!='\0') { symbol *sym; tok=lex(&val,&str); switch (tok) { @@ -1519,7 +1519,9 @@ static int command(void) break; } /* case */ } /* switch */ - } /* if */ + while (*lptr<=' ' && *lptr!='\0') + lptr++; + } /* while */ stgwrite("\n"); check_empty(lptr); } /* if */