зеркало из https://github.com/github/ruby.git
hash.c: hash_dup for rb_hash_to_h
* hash.c (rb_hash_to_h): share hash_dup to copy the contents and the default value/proc only. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
865a326da9
Коммит
921d6e269d
10
hash.c
10
hash.c
|
@ -1881,14 +1881,8 @@ static VALUE
|
|||
rb_hash_to_h(VALUE hash)
|
||||
{
|
||||
if (rb_obj_class(hash) != rb_cHash) {
|
||||
VALUE ret = rb_hash_new();
|
||||
if (!RHASH_EMPTY_P(hash))
|
||||
RHASH(ret)->ntbl = st_copy(RHASH(hash)->ntbl);
|
||||
if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
|
||||
FL_SET(ret, HASH_PROC_DEFAULT);
|
||||
}
|
||||
RHASH_SET_IFNONE(ret, RHASH_IFNONE(hash));
|
||||
return ret;
|
||||
const VALUE flags = RBASIC(hash)->flags;
|
||||
hash = hash_dup(hash, rb_cHash, flags & HASH_PROC_DEFAULT);
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче