Cast properly for shift operand

`(int) << RHASH_LEV_SHIFT` can be negative integer.
This commit is contained in:
Koichi Sasada 2020-03-09 02:53:46 +09:00
Родитель daa04c5562
Коммит dff69bb462
1 изменённых файлов: 1 добавлений и 1 удалений

2
hash.c
Просмотреть файл

@ -1434,7 +1434,7 @@ hash_iter_lev_inc(VALUE hash)
}
else {
lev += 1;
RBASIC(hash)->flags = ((RBASIC(hash)->flags & ~RHASH_LEV_MASK) | (lev << RHASH_LEV_SHIFT));
RBASIC(hash)->flags = ((RBASIC(hash)->flags & ~RHASH_LEV_MASK) | ((VALUE)lev << RHASH_LEV_SHIFT));
if (lev == RHASH_LEV_MAX) {
iter_lev_in_ivar_set(hash, lev);
}