diff --git a/src/symbol.c b/src/symbol.c index e8a3fe4dc..4ff16666d 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -691,4 +691,5 @@ mrb_init_symbol(mrb_state *mrb) mrb_define_method_id(mrb, sym, MRB_SYM(to_sym), mrb_obj_itself, MRB_ARGS_NONE()); /* 15.2.11.3.4 */ mrb_define_method_id(mrb, sym, MRB_SYM(inspect), sym_inspect, MRB_ARGS_NONE()); /* 15.2.11.3.5(x) */ mrb_define_method_id(mrb, sym, MRB_OPSYM(cmp), sym_cmp, MRB_ARGS_REQ(1)); + mrb_define_method_id(mrb, sym, MRB_OPSYM(eq), mrb_obj_equal_m, MRB_ARGS_REQ(1)); } diff --git a/src/vm.c b/src/vm.c index 68b3284ff..78e334c6e 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2660,6 +2660,9 @@ RETRY_TRY_BLOCK: if (mrb_obj_eq(mrb, regs[a], regs[a+1])) { SET_TRUE_VALUE(regs[a]); } + else if (mrb_symbol_p(regs[a])) { + SET_FALSE_VALUE(regs[a]); + } else { OP_CMP(==,eq); }