diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-09-04 17:20:19 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-10-12 18:20:18 +0900 |
| commit | 9b8e5658ce8193a670a98dee591d13bdd02df526 (patch) | |
| tree | f787abcfffc6d474071cadab2fec74ebaa5c967f /include | |
| parent | a127ded486b173b1b805da2c39d656c77d98c6cc (diff) | |
| download | mruby-9b8e5658ce8193a670a98dee591d13bdd02df526.tar.gz mruby-9b8e5658ce8193a670a98dee591d13bdd02df526.zip | |
Fix integer casting on 64 bit platforms.
On platforms where `sizeof(long)` is 4, casting `(long)` can lose data
or sign information.
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby/boxing_word.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h index 433fbd094..d7b5ff990 100644 --- a/include/mruby/boxing_word.h +++ b/include/mruby/boxing_word.h @@ -52,9 +52,9 @@ enum mrb_special_consts { #define BOXWORD_IMMEDIATE_MASK 0x07 #define BOXWORD_SHIFT_VALUE(o,n,t) \ - (t)(((long)(o)) >> BOXWORD_##n##_SHIFT) + (t)(((intptr_t)(o)) >> BOXWORD_##n##_SHIFT) #define BOXWORD_SET_SHIFT_VALUE(o,n,v) \ - ((o) = (((unsigned long)(v)) << BOXWORD_##n##_SHIFT) | BOXWORD_##n##_FLAG) + ((o) = (((uintptr_t)(v)) << BOXWORD_##n##_SHIFT) | BOXWORD_##n##_FLAG) #define BOXWORD_SHIFT_VALUE_P(o,n) \ (((o) & BOXWORD_##n##_MASK) == BOXWORD_##n##_FLAG) #define BOXWORD_OBJ_TYPE_P(o,n) \ |
