From 7522e064243e4d4c5f50fa906c2975328abaa545 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 9 Mar 2016 07:17:03 +0000 Subject: hash.c: SET_DEFAULT * hash.c (SET_DEFAULT): new macro to set the default value. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- hash.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'hash.c') diff --git a/hash.c b/hash.c index e98c7eec97..491aa17b23 100644 --- a/hash.c +++ b/hash.c @@ -32,6 +32,10 @@ FL_TEST((hash), FL_EXIVAR|FL_TAINT|HASH_PROC_DEFAULT) || \ !NIL_P(RHASH_IFNONE(hash))) +#define SET_DEFAULT(hash, ifnone) ( \ + FL_UNSET_RAW(hash, HASH_PROC_DEFAULT), \ + RHASH_SET_IFNONE(hash, ifnone)) + static VALUE has_extra_methods(VALUE klass) { @@ -944,8 +948,7 @@ static VALUE rb_hash_set_default(VALUE hash, VALUE ifnone) { rb_hash_modify_check(hash); - RHASH_SET_IFNONE(hash, ifnone); - FL_UNSET(hash, HASH_PROC_DEFAULT); + SET_DEFAULT(hash, ifnone); return ifnone; } @@ -993,8 +996,7 @@ rb_hash_set_default_proc(VALUE hash, VALUE proc) rb_hash_modify_check(hash); if (NIL_P(proc)) { - FL_UNSET(hash, HASH_PROC_DEFAULT); - RHASH_SET_IFNONE(hash, proc); + SET_DEFAULT(hash, proc); return proc; } b = rb_check_convert_type(proc, T_DATA, "Proc", "to_proc"); -- cgit v1.2.3