vm.c (OP_CMP): fixed wrong numeric comparison for integers; fix #5975

MRB_TT_INTEGER value may not be fixnum (immediate integer), so we should
not use mrb_fixnum() here.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2023-04-07 10:46:01 +09:00
parent 761816bf8a
commit 27a14f0a9a
+3 -3
View File
@@ -2643,13 +2643,13 @@ RETRY_TRY_BLOCK:
/* need to check if - is overridden */\
switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):\
result = OP_CMP_BODY(op,mrb_fixnum,mrb_fixnum);\
result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
break;\
case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):\
result = OP_CMP_BODY(op,mrb_fixnum,mrb_float);\
result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
break;\
case TYPES2(MRB_TT_FLOAT,MRB_TT_INTEGER):\
result = OP_CMP_BODY(op,mrb_float,mrb_fixnum);\
result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
break;\
case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
result = OP_CMP_BODY(op,mrb_float,mrb_float);\