mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* iseq.c (iseq_s_disasm): fix a bug that may cause SEGV.
* test/ruby/test_method.rb (test_body): add a test for the above change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4536f22a69
commit
5cb16a55f5
3 changed files with 10 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
Sat Aug 20 13:19:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
|
||||
|
||||
* iseq.c (iseq_s_disasm): fix a bug that may cause SEGV.
|
||||
|
||||
* test/ruby/test_method.rb (test_body): add a test for the above change.
|
||||
|
||||
Sat Aug 20 10:43:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* ext/stringio/stringio.c (strio_read): return new string if nil
|
||||
|
|
6
iseq.c
6
iseq.c
|
@ -1030,9 +1030,9 @@ iseq_s_disasm(VALUE klass, VALUE body)
|
|||
rb_proc_t *proc;
|
||||
VALUE iseqval;
|
||||
GetProcPtr(body, proc);
|
||||
iseqval = proc->block.iseq->self;
|
||||
if (RUBY_VM_NORMAL_ISEQ_P(iseqval)) {
|
||||
ret = rb_iseq_disasm(iseqval);
|
||||
iseq = proc->block.iseq;
|
||||
if (RUBY_VM_NORMAL_ISEQ_P(iseq)) {
|
||||
ret = rb_iseq_disasm(iseq->self);
|
||||
}
|
||||
}
|
||||
else if ((iseq = rb_method_get_iseq(body)) != 0) {
|
||||
|
|
|
@ -123,6 +123,7 @@ class TestMethod < Test::Unit::TestCase
|
|||
def o.foo; end
|
||||
assert_nothing_raised { RubyVM::InstructionSequence.disasm(o.method(:foo)) }
|
||||
assert_nothing_raised { RubyVM::InstructionSequence.disasm("x".method(:upcase)) }
|
||||
assert_nothing_raised { RubyVM::InstructionSequence.disasm(method(:to_s).to_proc) }
|
||||
end
|
||||
|
||||
def test_new
|
||||
|
|
Loading…
Reference in a new issue