diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-03 07:35:35 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-03 07:35:35 +0000 |
commit | adf1c94ffe75cea7d6b12ac10809656c15d33079 (patch) | |
tree | 3545d4c664f2bd6dcb03b5638bf374f104c55f4a /object.c | |
parent | b30a6b8d1d194528a2c84b7e2c73d23a4d25cc42 (diff) | |
download | ruby-adf1c94ffe75cea7d6b12ac10809656c15d33079.tar.gz |
bignum.c: hide intermediate Bignums
* bignum.c (rb_big_eq): hide intermediate Bignums not just freeing
memory. [ruby-core:53893] [Bug #8204]
* object.c (rb_obj_hide): hide an object by clearing klass.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -43,6 +43,15 @@ static ID id_const_missing; (!SPECIAL_CONST_P(obj) && \ (BUILTIN_TYPE(obj) == T_CLASS || BUILTIN_TYPE(obj) == T_MODULE)) +VALUE +rb_obj_hide(VALUE obj) +{ + if (!SPECIAL_CONST_P(obj)) { + RBASIC(obj)->klass = 0; + } + return obj; +} + /* * call-seq: * obj === other -> true or false |