summaryrefslogtreecommitdiffhomepage
path: root/src/hash.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hash.c')
-rw-r--r--src/hash.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/hash.c b/src/hash.c
index c0d3d712f..fc6b6fa6b 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -326,8 +326,15 @@ obj_hash_code(mrb_state *mrb, mrb_value key, struct RHash *h)
case MRB_TT_TRUE:
case MRB_TT_FALSE:
case MRB_TT_SYMBOL:
+ hash_code = U32(mrb_fixnum(key));
+ break;
case MRB_TT_INTEGER:
+ if (mrb_fixnum_p(key)) {
+ hash_code = U32(mrb_fixnum(key));
+ break;
+ }
#ifndef MRB_NO_FLOAT
+ /* fall through */
case MRB_TT_FLOAT:
#endif
hash_code = U32(mrb_obj_id(key));