summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-07-31 11:08:05 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-07-31 11:08:05 +0900
commit13e84d5c0a53ad013aa0093f179115bcf88417e9 (patch)
tree936bc22c4cd56e0c60106761686020ff01ff962b /hash.c
parente315f3a1341f123051b75e589b746132c3510079 (diff)
Moved RHASH_LEV_MASK and turned into a macro
Get rid of "ISO C restricts enumerator values to range of 'int'" error.
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hash.c b/hash.c
index dfb27b83b2..b0e9b027fd 100644
--- a/hash.c
+++ b/hash.c
@@ -1317,10 +1317,11 @@ iter_lev_in_ivar_set(VALUE hash, int lev)
rb_ivar_set_internal(hash, rb_intern("hash_iter_lev"), INT2FIX(lev));
}
+#define RHASH_LEV_MASK ((VALUE)RHASH_LEV_MAX << RHASH_LEV_SHIFT)
static int
iter_lev_in_flags(VALUE hash)
{
- unsigned int u = (unsigned int)(RBASIC(hash)->flags & (unsigned int)RHASH_LEV_MASK) >> RHASH_LEV_SHIFT;
+ unsigned int u = (unsigned int)((RBASIC(hash)->flags >> RHASH_LEV_SHIFT) & RHASH_LEV_MAX);
return (int)u;
}