diff --git a/ChangeLog b/ChangeLog index 656c4b54b6..8264c240a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Nov 10 18:25:56 2015 Nobuyoshi Nakada + + * hash.c (rb_hash_to_proc): use rb_func_proc_new to make light + weight proc. [Feature #11653] + Tue Nov 10 18:23:35 2015 Nobuyoshi Nakada * proc.c (cfunc_proc_t): add room for me. diff --git a/hash.c b/hash.c index 5b1abbd732..f34e6e7fdf 100644 --- a/hash.c +++ b/hash.c @@ -2769,13 +2769,14 @@ rb_hash_gt(VALUE hash, VALUE other) static VALUE hash_proc_call(VALUE key, VALUE hash, int argc, const VALUE *argv, VALUE passed_proc) { - return rb_hash_aref(hash, key); + rb_check_arity(argc, 1, 1); + return rb_hash_aref(hash, *argv); } static VALUE rb_hash_to_proc(VALUE hash) { - return rb_proc_new(hash_proc_call, hash); + return rb_func_proc_new(hash_proc_call, hash); } static int path_tainted = -1;