diff options
Diffstat (limited to 'hash.c')
-rw-r--r-- | hash.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -94,8 +94,11 @@ rb_any_hash(a) default: DEFER_INTS; hval = rb_funcall(a, hash, 0); - if (!FIXNUM_P(hval)) { - hval = rb_funcall(hval, '%', 1, INT2FIX(65439)); + if (FIXNUM_P(hval)) { + hval %= 536870917; + } + else { + hval = rb_funcall(hval, '%', 1, INT2FIX(536870917)); } ENABLE_INTS; return (int)FIX2LONG(hval); |