1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
class String
p private_instance_methods(false)
end
x = "xxx"
def x.foo; end
x.instance_variable_set(:@bar, 1);
x.taint
x.freeze
y = "yyy"
p y.send(:initialize_copy, x)
puts '---'
y.foo rescue p $!
p y.instance_variables
p y.tainted?
p y.frozen?
p y
puts '---'
h = ""
h.freeze
h.send(:initialize_copy, "") rescue p $!
h = "g"
h.send(:initialize_copy, S.new) rescue p $!
p h
puts '---'
class String
def initialize_copy *a
puts 'init_copy'
end
end
x = "qqq"
x.instance_variable_set(:@foo, 1)
y = x.dup
p y
p y.instance_variables
puts '---'
x = {}
x["foo"] = 1
p x
|