From 66c127bc6f95761f967efc5109cd229973fbc50f Mon Sep 17 00:00:00 2001 From: shugo Date: Sat, 10 Nov 2007 08:33:28 +0000 Subject: * thread.c (call_trace_proc): don't call ID2SYM() for ID_ALLOCATOR to avoid SEGV. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ thread.c | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c1944b076a..f9a67710f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Nov 10 17:27:55 2007 Shugo Maeda + + * thread.c (call_trace_proc): don't call ID2SYM() for ID_ALLOCATOR + to avoid SEGV. + Sat Nov 10 16:37:07 2007 Eric Hodel * lib/rubygems: Import RubyGems revision 1493. diff --git a/thread.c b/thread.c index 3591acc450..9476017a33 100644 --- a/thread.c +++ b/thread.c @@ -2890,10 +2890,20 @@ call_trace_proc(VALUE args) VALUE eventname = rb_str_new2(get_event_name(p->event)); VALUE filename = rb_str_new2(rb_sourcefile()); int line = rb_sourceline(); + VALUE mid; + if (p->id == ID_ALLOCATOR) { + mid = ID2SYM(rb_intern("allocate")); + } + else if (p->id) { + mid = ID2SYM(p->id); + } + else { + mid = Qnil; + } return rb_proc_call(p->proc, rb_ary_new3(6, eventname, filename, INT2FIX(line), - p->id ? ID2SYM(p->id) : Qnil, + mid, p->self ? rb_binding_new() : Qnil, p->klass ? p->klass : Qnil)); } -- cgit v1.2.3