[ruby-dev:48183] [ruby-trunk - Bug #9813] [Closed] Module#initialize_copy does not clean the tables

From: nobu@...
Date: 2014-05-08 05:34:42 UTC
List: ruby-dev #48183
Issue #9813 has been updated by Nobuyoshi Nakada.

Status changed from Open to Closed
% Done changed from 0 to 100

Applied in changeset r45874.

----------
class.c: always clear tables first

* class.c (rb_mod_init_copy): always clear instance variable,
  constant and method tables first, regardless the source tables.
  [ruby-dev:48182] [Bug #9813]

----------------------------------------
Bug #9813: Module#initialize_copy does not clean the tables
https://bugs.ruby-lang.org/issues/9813#change-46611

* Author: Nobuyoshi Nakada
* Status: Closed
* Priority: Normal
* Assignee:=20
* Category: core
* Target version:=20
* ruby -v: r45873
* Backport: 2.0.0: REQUIRED, 2.1: REQUIRED
----------------------------------------
`Module#initialize_copy`=E3=81=A7=E5=AE=9A=E6=95=B0=E3=82=84=E3=82=A4=E3=83=
=B3=E3=82=B9=E3=82=BF=E3=83=B3=E3=82=B9=E5=A4=89=E6=95=B0=E3=82=92=E6=8C=81=
=E3=81=9F=E3=81=AA=E3=81=84`Module`=E3=82=92=E3=82=B3=E3=83=94=E3=83=BC=E3=
=81=97=E3=81=A6=E3=82=82=E3=80=81=E5=85=83=E3=81=AE=E5=AE=9A=E6=95=B0=E3=82=
=84=E3=82=A4=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=B3=E3=82=B9=E5=A4=89=E6=95=B0=
=E3=81=8C=E6=AE=8B=E3=81=A3=E3=81=A6=E3=81=84=E3=81=BE=E3=81=99=E3=80=82

~~~ruby
m =3D Module.new do
  def x
  end
  const_set(:X, 1)
  @x =3D 2
end
p m.instance_methods, m.instance_variables, m.constants
#=3D> [:x]
#=3D> [:@x]
#=3D> [:X]
m.module_eval do
  initialize_copy(Module.new)
end
p m.instance_methods, m.instance_variables, m.constants
#=3D> []
#=3D> [:@x]
#=3D> [:X]
~~~

1.8=E3=81=A7`initialize_copy`=E3=81=8C=E5=B0=8E=E5=85=A5=E3=81=95=E3=82=8C=
=E3=81=9F=E5=BD=93=E5=88=9D=E3=81=8B=E3=82=89=E3=81=82=E3=82=8B=E3=83=90=E3=
=82=B0=E3=81=AE=E3=82=88=E3=81=86=E3=81=A7=E3=81=99=E3=80=82




--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next