From 8a019106c0e57715377f991a510b5f0bca07d464 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Mon, 16 Nov 2020 16:04:05 +0900 Subject: Use `uintptr_t` instead of `unsigned long` in `include/mruby/boxing_word.h` `mrb_bool` on LLP64 environment seems to become false if, for example, `mrb_value` is a pointer whose lower 32 bits are 0. --- include/mruby/boxing_word.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h index 120c4f476..c0005dffe 100644 --- a/include/mruby/boxing_word.h +++ b/include/mruby/boxing_word.h @@ -131,7 +131,7 @@ mrb_integer_func(mrb_value o) { #else #define mrb_symbol(o) BOXWORD_SHIFT_VALUE(o, SYMBOL, mrb_sym) #endif -#define mrb_bool(o) (((o).w & ~(unsigned long)MRB_Qfalse) != 0) +#define mrb_bool(o) (((o).w & ~(uintptr_t)MRB_Qfalse) != 0) #define mrb_fixnum_p(o) BOXWORD_SHIFT_VALUE_P(o, FIXNUM) #define mrb_integer_p(o) (BOXWORD_SHIFT_VALUE_P(o, FIXNUM)||BOXWORD_OBJ_TYPE_P(o, INTEGER)) -- cgit v1.2.3