From 44cf56d6e70dbe06a160b004494ba40dd4cfb426 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 22 Jun 2000 08:29:58 +0000 Subject: 2000-06-22 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@775 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- hash.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'hash.c') diff --git a/hash.c b/hash.c index e66ab126e9..a8251dac7f 100644 --- a/hash.c +++ b/hash.c @@ -268,8 +268,13 @@ static VALUE rb_hash_dup(hash) VALUE hash; { + VALUE klass = CLASS_OF(hash); + NEWOBJ(dup, struct RHash); - OBJSETUP(dup, CLASS_OF(hash), T_HASH); + while (TYPE(klass) == T_ICLASS || FL_TEST(klass, FL_SINGLETON)) { + klass = (VALUE)RCLASS(klass)->super; + } + OBJSETUP(dup, klass, T_HASH); dup->iter_lev = 0; dup->ifnone = RHASH(hash)->ifnone; -- cgit v1.2.3