From 5e721623a0dc02b83a8c98daae1e34584081c759 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sun, 27 Apr 2008 19:41:51 +0000
Subject: [PATCH] fixed a math mistake

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%402104
---
 sourcepawn/jit/x86/jit_x86.cpp        | 84 +++++++++++++--------------
 sourcepawn/jit/x86/opcode_helpers.cpp |  6 +-
 sourcepawn/jit/x86/ungen_opcodes.h    |  4 +-
 3 files changed, 47 insertions(+), 47 deletions(-)

diff --git a/sourcepawn/jit/x86/jit_x86.cpp b/sourcepawn/jit/x86/jit_x86.cpp
index 9b2f24cb..931dbde4 100644
--- a/sourcepawn/jit/x86/jit_x86.cpp
+++ b/sourcepawn/jit/x86/jit_x86.cpp
@@ -52,7 +52,7 @@ inline void WriteOp_Push(JitWriter *jit)
 	cell_t val = jit->read_cell();
 	IA32_Sub_Rm_Imm8(jit, AMX_REG_STK, 4, MOD_REG);
 	//optimize encoding a bit...
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_TMP, AMX_REG_DAT, (jit_int8_t)val);
 	} else {
@@ -75,7 +75,7 @@ inline void WriteOp_Zero(JitWriter *jit)
 {
 	//mov [ebp+<val>], 0
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Rm_Imm32_Disp8(jit, AMX_REG_DAT, 0, (jit_int8_t)val);
 	} else {
@@ -87,7 +87,7 @@ inline void WriteOp_Zero_S(JitWriter *jit)
 {
 	//mov [ebx+<val>], 0
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Rm_Imm32_Disp8(jit, AMX_REG_FRM, 0, (jit_int8_t)val);
 	} else {
@@ -104,7 +104,7 @@ inline void WriteOp_Push_S(JitWriter *jit)
 	cell_t val = jit->read_cell();
 	IA32_Sub_Rm_Imm8(jit, AMX_REG_STK, 4, MOD_REG);
 	//optimize encoding a bit...
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_TMP, AMX_REG_FRM, (jit_int8_t)val);
 	} else {
@@ -442,7 +442,7 @@ inline void WriteOp_Add_C(JitWriter *jit)
 {
 	//add eax, <val>
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 		IA32_Add_Rm_Imm8(jit, AMX_REG_PRI, (jit_int8_t)val, MOD_REG);
 	else
 		IA32_Add_Eax_Imm32(jit, val);
@@ -452,7 +452,7 @@ inline void WriteOp_SMul_C(JitWriter *jit)
 {
 	//imul eax, <val>
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 		IA32_IMul_Reg_Imm8(jit, AMX_REG_PRI, MOD_REG, (jit_int8_t)val);
 	else
 		IA32_IMul_Reg_Imm32(jit, AMX_REG_PRI, MOD_REG, val);
@@ -540,7 +540,7 @@ inline void WriteOp_Eq_C_Pri(JitWriter *jit)
 	//mov eax, 0
 	//sete al
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 		IA32_Cmp_Rm_Imm8(jit, MOD_REG, AMX_REG_PRI, (jit_int8_t)val);
 	else
 		IA32_Cmp_Eax_Imm32(jit, val);
@@ -555,7 +555,7 @@ inline void WriteOp_Eq_C_Alt(JitWriter *jit)
 	//sete al
 	cell_t val = jit->read_cell();
 	IA32_Xor_Reg_Rm(jit, AMX_REG_PRI, AMX_REG_PRI, MOD_REG);
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 		IA32_Cmp_Rm_Imm8(jit, MOD_REG, AMX_REG_ALT, (jit_int8_t)val);
 	else
 		IA32_Cmp_Rm_Imm32(jit, MOD_REG, AMX_REG_ALT, val);
@@ -578,7 +578,7 @@ inline void WriteOp_Inc(JitWriter *jit)
 {
 	//add [ebp+<val>], 1
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 		IA32_Add_Rm_Imm8_Disp8(jit, AMX_REG_DAT, 1, (jit_int8_t)val);
 	else
 		IA32_Add_Rm_Imm8_Disp32(jit, AMX_REG_DAT, 1, val);
@@ -588,7 +588,7 @@ inline void WriteOp_Inc_S(JitWriter *jit)
 {
 	//add [ebx+<val>], 1
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 		IA32_Add_Rm_Imm8_Disp8(jit, AMX_REG_FRM, 1, (jit_int8_t)val);
 	else
 		IA32_Add_Rm_Imm8_Disp32(jit, AMX_REG_FRM, 1, val);
@@ -616,7 +616,7 @@ inline void WriteOp_Dec(JitWriter *jit)
 {
 	//sub [ebp+<val>], 1
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Sub_Rm_Imm8_Disp8(jit, AMX_REG_DAT, 1, (jit_int8_t)val);
 	} else {
@@ -628,7 +628,7 @@ inline void WriteOp_Dec_S(JitWriter *jit)
 {
 	//sub [ebx+<val>], 1
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Sub_Rm_Imm8_Disp8(jit, AMX_REG_FRM, 1, (jit_int8_t)val);
 	} else {
@@ -646,7 +646,7 @@ inline void WriteOp_Load_Pri(JitWriter *jit)
 {
 	//mov eax, [ebp+<val>]
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_PRI, AMX_REG_DAT, (jit_int8_t)val);
 	} else {
@@ -658,7 +658,7 @@ inline void WriteOp_Load_Alt(JitWriter *jit)
 {
 	//mov edx, [ebp+<val>]
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_ALT, AMX_REG_DAT, (jit_int8_t)val);
 	} else {
@@ -670,7 +670,7 @@ inline void WriteOp_Load_S_Pri(JitWriter *jit)
 {
 	//mov eax, [ebx+<val>]
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_PRI, AMX_REG_FRM, (jit_int8_t)val);
 	} else {
@@ -682,7 +682,7 @@ inline void WriteOp_Load_S_Alt(JitWriter *jit)
 {
 	//mov edx, [ebx+<val>]
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_ALT, AMX_REG_FRM, (jit_int8_t)val);
 	} else {
@@ -695,7 +695,7 @@ inline void WriteOp_Lref_Pri(JitWriter *jit)
 	//mov eax, [ebp+<val>]
 	//mov eax, [ebp+eax]
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_PRI, AMX_REG_DAT, (jit_int8_t)val);
 	} else {
@@ -709,7 +709,7 @@ inline void WriteOp_Lref_Alt(JitWriter *jit)
 	//mov edx, [ebp+<val>]
 	//mov edx, [ebp+edx]
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_ALT, AMX_REG_DAT, (jit_int8_t)val);
 	} else {
@@ -723,7 +723,7 @@ inline void WriteOp_Lref_S_Pri(JitWriter *jit)
 	//mov eax, [ebx+<val>]
 	//mov eax, [ebp+eax]
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_PRI, AMX_REG_FRM, (jit_int8_t)val);
 	} else {
@@ -737,7 +737,7 @@ inline void WriteOp_Lref_S_Alt(JitWriter *jit)
 	//mov edx, [ebx+<val>]
 	//mov edx, [ebp+edx]
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_ALT, AMX_REG_FRM, (jit_int8_t)val);
 	} else {
@@ -766,7 +766,7 @@ inline void WriteOp_Addr_Pri(JitWriter *jit)
 	//add eax, <val>
 	cell_t val = jit->read_cell();
 	IA32_Mov_Reg_Rm(jit, AMX_REG_PRI, AMX_REG_INFO, MOD_MEM_REG);
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Add_Rm_Imm8(jit, AMX_REG_PRI, (jit_int8_t)val, MOD_REG);
 	} else {
@@ -780,7 +780,7 @@ inline void WriteOp_Addr_Alt(JitWriter *jit)
 	//add edx, <val>
 	cell_t val = jit->read_cell();
 	IA32_Mov_Reg_Rm(jit, AMX_REG_ALT, AMX_REG_INFO, MOD_MEM_REG);
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Add_Rm_Imm8(jit, AMX_REG_ALT, (jit_int8_t)val, MOD_REG);
 	} else {
@@ -792,7 +792,7 @@ inline void WriteOp_Stor_Pri(JitWriter *jit)
 {
 	//mov [ebp+<val>], eax
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Rm_Reg_Disp8(jit, AMX_REG_DAT, AMX_REG_PRI, (jit_int8_t)val);
 	} else {
@@ -804,7 +804,7 @@ inline void WriteOp_Stor_Alt(JitWriter *jit)
 {
 	//mov [ebp+<val>], edx
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Rm_Reg_Disp8(jit, AMX_REG_DAT, AMX_REG_ALT, (jit_int8_t)val);
 	} else {
@@ -816,7 +816,7 @@ inline void WriteOp_Stor_S_Pri(JitWriter *jit)
 {
 	//mov [ebx+<val>], eax
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Rm_Reg_Disp8(jit, AMX_REG_FRM, AMX_REG_PRI, (jit_int8_t)val);
 	} else {
@@ -828,7 +828,7 @@ inline void WriteOp_Stor_S_Alt(JitWriter *jit)
 {
 	//mov [ebx+<val>], edx
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Rm_Reg_Disp8(jit, AMX_REG_FRM, AMX_REG_ALT, (jit_int8_t)val);
 	} else {
@@ -847,7 +847,7 @@ inline void WriteOp_Sref_Pri(JitWriter *jit)
 	//mov ecx, [ebp+<val>]
 	//mov [ebp+ecx], eax
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_TMP, AMX_REG_DAT, (jit_int8_t)val);
 	} else {
@@ -861,7 +861,7 @@ inline void WriteOp_Sref_Alt(JitWriter *jit)
 	//mov ecx, [ebp+<val>]
 	//mov [ebp+ecx], edx
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_TMP, AMX_REG_DAT, (jit_int8_t)val);
 	} else {
@@ -875,7 +875,7 @@ inline void WriteOp_Sref_S_Pri(JitWriter *jit)
 	//mov ecx, [ebx+<val>]
 	//mov [ebp+ecx], eax
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_TMP, AMX_REG_FRM, (jit_int8_t)val);
 	} else {
@@ -889,7 +889,7 @@ inline void WriteOp_Sref_S_Alt(JitWriter *jit)
 	//mov ecx, [ebx+<val>]
 	//mov [ebp+ecx], edx
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_TMP, AMX_REG_FRM, (jit_int8_t)val);
 	} else {
@@ -947,7 +947,7 @@ inline void WriteOp_PushAddr(JitWriter *jit)
 	cell_t val = jit->read_cell();
 	IA32_Mov_Reg_Rm(jit, AMX_REG_TMP, AMX_REG_INFO, MOD_MEM_REG);
 	IA32_Sub_Rm_Imm8(jit, AMX_REG_STK, 4, MOD_REG);
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Add_Rm_Imm8(jit, AMX_REG_TMP, (jit_int8_t)val, MOD_REG);
 	} else {
@@ -1097,7 +1097,7 @@ inline void WriteOp_Const(JitWriter *jit)
 	//mov [ebp+<addr>], <val>
 	cell_t addr = jit->read_cell();
 	cell_t val = jit->read_cell();
-	if (addr < SCHAR_MAX && addr > SCHAR_MIN)
+	if (addr <= SCHAR_MAX && addr >= SCHAR_MIN)
 	{
 		IA32_Mov_Rm_Imm32_Disp8(jit, AMX_REG_DAT, val, (jit_int8_t)addr);
 	} else {
@@ -1110,7 +1110,7 @@ inline void WriteOp_Const_S(JitWriter *jit)
 	//mov [ebx+<offs>], <val>
 	cell_t offs = jit->read_cell();
 	cell_t val = jit->read_cell();
-	if (offs < SCHAR_MAX && offs > SCHAR_MIN)
+	if (offs <= SCHAR_MAX && offs >= SCHAR_MIN)
 	{
 		IA32_Mov_Rm_Imm32_Disp8(jit, AMX_REG_FRM, val, (jit_int8_t)offs);
 	} else {
@@ -1194,7 +1194,7 @@ inline void WriteOp_Stack(JitWriter *jit)
 {
 	//add edi, <val>
 	cell_t val = jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Add_Rm_Imm8(jit, AMX_REG_STK, (jit_int8_t)val, MOD_REG);
 	} else {
@@ -1217,7 +1217,7 @@ inline void WriteOp_StackAdjust(JitWriter *jit)
 
 	//lea edi, [ebx-val]
 	
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Lea_DispRegImm8(jit, AMX_REG_STK, AMX_REG_FRM, val);
 	}
@@ -1237,7 +1237,7 @@ inline void WriteOp_Heap(JitWriter *jit)
 	//add [esi+hea], <val>
 	cell_t val = jit->read_cell();
 	IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_ALT, AMX_REG_INFO, AMX_INFO_HEAP);
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Add_Rm_Imm8_Disp8(jit, AMX_REG_INFO, (jit_int8_t)val, AMX_INFO_HEAP);
 	} else {
@@ -1401,7 +1401,7 @@ inline void WriteOp_Bounds(JitWriter *jit)
 	
 	//cmp eax, <val>
 	//ja :error
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Cmp_Rm_Imm8(jit, MOD_REG, AMX_REG_PRI, (jit_int8_t)val);
 	} else {
@@ -1568,7 +1568,7 @@ inline void WriteOp_Switch(JitWriter *jit)
 			/* negate it so we'll get a lower bound of 0 */
 			//lea ecx, [eax-<LOWER_BOUND>]
 			low_bound = -low_bound;
-			if (low_bound > SCHAR_MIN && low_bound < SCHAR_MAX)
+			if (low_bound >= SCHAR_MIN && low_bound <= SCHAR_MAX)
 			{
 				IA32_Lea_DispRegImm8(jit, AMX_REG_TMP, AMX_REG_PRI, low_bound);
 			} else {
@@ -1580,7 +1580,7 @@ inline void WriteOp_Switch(JitWriter *jit)
 		}
 		cell_t high_bound = abs(cases[0].val - cases[num_cases-1].val);
 		//cmp ecx, <UPPER BOUND BOUND>
-		if (high_bound > SCHAR_MIN && high_bound < SCHAR_MAX)
+		if (high_bound >= SCHAR_MIN && high_bound <= SCHAR_MAX)
 		{
 			IA32_Cmp_Rm_Imm8(jit, MOD_REG, AMX_REG_TMP, high_bound);
 		} else {
@@ -1628,7 +1628,7 @@ inline void WriteOp_Switch(JitWriter *jit)
 			{
 				val = cases[i].val;
 				//cmp eax, <val> OR cmp al, <val>
-				if (val > SCHAR_MIN && val < SCHAR_MAX)
+				if (val >= SCHAR_MIN && val <= SCHAR_MAX)
 				{
 					IA32_Cmp_Al_Imm8(jit, val);
 				} else {
@@ -1732,7 +1732,7 @@ inline void WriteOp_Sysreq_N(JitWriter *jit)
 	//push edi		; stack
 	//push <native>	; native index
 	IA32_Push_Reg(jit, AMX_REG_STK);
-	if (native_index < SCHAR_MAX && native_index > SCHAR_MIN)
+	if (native_index <= SCHAR_MAX && native_index >= SCHAR_MIN)
 	{
 		IA32_Push_Imm8(jit, (jit_int8_t)native_index);
 	} else {
@@ -1808,7 +1808,7 @@ inline void WriteOp_Sysreq_N(JitWriter *jit)
 	num_params++;
 	num_params *= 4;
 	//add edi, <val*4+4>
-	if (num_params < SCHAR_MAX && num_params > SCHAR_MIN)
+	if (num_params <= SCHAR_MAX && num_params >= SCHAR_MIN)
 	{
 		IA32_Add_Rm_Imm8(jit, AMX_REG_STK, (jit_int8_t)num_params, MOD_REG);
 	} else {
diff --git a/sourcepawn/jit/x86/opcode_helpers.cpp b/sourcepawn/jit/x86/opcode_helpers.cpp
index 079e23aa..decb81bd 100644
--- a/sourcepawn/jit/x86/opcode_helpers.cpp
+++ b/sourcepawn/jit/x86/opcode_helpers.cpp
@@ -339,7 +339,7 @@ void Macro_PushN_Addr(JitWriter *jit, int i)
 	do
 	{
 		val = jit->read_cell();
-		if (val < SCHAR_MAX && val > SCHAR_MIN)
+		if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 			IA32_Lea_DispRegImm8(jit, AMX_REG_TMP, AMX_REG_PRI, (jit_int8_t)val);
 		else
 			IA32_Lea_DispRegImm32(jit, AMX_REG_TMP, AMX_REG_PRI, val);
@@ -361,7 +361,7 @@ void Macro_PushN_S(JitWriter *jit, int i)
 	do 
 	{
 		val = jit->read_cell();
-		if (val < SCHAR_MAX && val > SCHAR_MIN)
+		if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 			IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_TMP, AMX_REG_FRM, (jit_int8_t)val);
 		else
 			IA32_Mov_Reg_Rm_Disp32(jit, AMX_REG_TMP, AMX_REG_FRM, val);
@@ -396,7 +396,7 @@ void Macro_PushN(JitWriter *jit, int i)
 	do 
 	{
 		val = jit->read_cell();
-		if (val < SCHAR_MAX && val > SCHAR_MIN)
+		if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 			IA32_Mov_Reg_Rm_Disp8(jit, AMX_REG_TMP, AMX_REG_DAT, (jit_int8_t)val);
 		else
 			IA32_Mov_Reg_Rm_Disp32(jit, AMX_REG_TMP, AMX_REG_DAT, val);
diff --git a/sourcepawn/jit/x86/ungen_opcodes.h b/sourcepawn/jit/x86/ungen_opcodes.h
index 20810474..b7f95b8a 100644
--- a/sourcepawn/jit/x86/ungen_opcodes.h
+++ b/sourcepawn/jit/x86/ungen_opcodes.h
@@ -70,7 +70,7 @@ inline void WriteOp_Align_Pri(JitWriter *jit)
 {
 	//xor eax, <cellsize - val>
 	cell_t val = sizeof(cell_t) - jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Xor_Rm_Imm8(jit, AMX_REG_PRI, MOD_REG, (jit_int8_t)val);
 	} else {
@@ -82,7 +82,7 @@ inline void WriteOp_Align_Alt(JitWriter *jit)
 {
 	//xor edx, <cellsize - val>
 	cell_t val = sizeof(cell_t) - jit->read_cell();
-	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	if (val <= SCHAR_MAX && val >= SCHAR_MIN)
 	{
 		IA32_Xor_Rm_Imm8(jit, AMX_REG_ALT, MOD_REG, (jit_int8_t)val);
 	} else {