diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | cont.c | 2 | ||||
-rw-r--r-- | vm.c | 1 |
3 files changed, 7 insertions, 2 deletions
@@ -1,3 +1,9 @@ +Sun Oct 2 08:43:25 2011 Kazuki Tsujimoto <kazuki@callcc.net> + + * vm.c (rb_thread_mark), cont.c (cont_mark): self pointer should not + be marked by itself. Patch by Koichi Sasada. + [ruby-dev:44567] [Bug #5386] + Sun Oct 2 00:42:14 2011 Kazuki Tsujimoto <kazuki@callcc.net> * vm.c (rb_thread_mark): rb_thread_t needs self to be marked. @@ -138,7 +138,7 @@ cont_mark(void *ptr) if (ptr) { rb_context_t *cont = ptr; rb_gc_mark(cont->value); - rb_thread_mark(&cont->saved_thread); + rb_gc_mark(cont->saved_thread.self); if (cont->vm_stack) { #ifdef CAPTURE_JUST_VALID_VM_STACK @@ -1735,7 +1735,6 @@ rb_thread_mark(void *ptr) RUBY_MARK_UNLESS_NULL(th->first_proc); if (th->first_proc) RUBY_MARK_UNLESS_NULL(th->first_args); - RUBY_MARK_UNLESS_NULL(th->self); RUBY_MARK_UNLESS_NULL(th->thgroup); RUBY_MARK_UNLESS_NULL(th->value); RUBY_MARK_UNLESS_NULL(th->errinfo); |