From: nobu@... Date: 2015-12-17T02:57:44+00:00 Subject: [ruby-core:72202] [Ruby trunk - Bug #11740] ObjectSpace.each_object exposes internal metaclasses Issue #11740 has been updated by Nobuyoshi Nakada. Koichi Sasada wrote: > ```diff > +int > +rb_singleton_class_has_metaclass_p(VALUE sklass) > +{ > + return rb_ivar_get(METACLASS_OF(sklass), id_attached) == sklass; > +} Should be `rb_attr_get` instead. Benoit Daloze wrote: > PS: How should I apply the patch? I tried `patch < x.patch` but I got a rejected hunk in gc.c Redmine seems expand tabs, you can see markdown source from a pencil icon. ---------------------------------------- Bug #11740: ObjectSpace.each_object exposes internal metaclasses https://bugs.ruby-lang.org/issues/11740#change-55613 * Author: Benoit Daloze * Status: Open * Priority: Normal * Assignee: Koichi Sasada * ruby -v: ruby 2.3.0dev (2015-11-19 trunk 52672) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- ObjectSpace.each_object exposes internal metaclasses and this might result in assumptions being violated since the metaclass structure is not well preserved. See the attached script for an example. The #bla method should always be defined on the metaclass of "klass". See https://bugs.ruby-lang.org/issues/11360#note-2 as well in which I warned against this problem ;) ---Files-------------------------------- objspace_expose_intern_meta.rb (413 Bytes) -- https://bugs.ruby-lang.org/