Skip to content

Commit

Permalink
cont.c: fix root fiber to_s
Browse files Browse the repository at this point in the history
* cont.c (fiber_to_s): fix Fiber#to_s on root fibers which have no
  procs.  [ruby-core:82629] [Bug #13859]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59721 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Sep 2, 2017
1 parent caf92db commit 0465916
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
9 changes: 8 additions & 1 deletion cont.c
Original file line number Diff line number Diff line change
Expand Up @@ -1753,8 +1753,15 @@ fiber_to_s(VALUE fibval)
char status_info[0x10];

GetFiberPtr(fibval, fib);
GetProcPtr(fib->first_proc, proc);
snprintf(status_info, 0x10, " (%s)", fiber_status_name(fib->status));
if (!rb_obj_is_proc(fib->first_proc)) {
VALUE str = rb_any_to_s(fibval);
strlcat(status_info, ">", sizeof(status_info));
rb_str_set_len(str, RSTRING_LEN(str)-1);
rb_str_cat_cstr(str, status_info);
return str;
}
GetProcPtr(fib->first_proc, proc);
return rb_block_to_s(fibval, &proc->block, status_info);
}

Expand Down
1 change: 1 addition & 0 deletions test/ruby/test_fiber.rb
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@ def test_to_s
assert_match(/suspended/, f.to_s)
f.resume
assert_match(/terminated/, f.to_s)
assert_match(/resumed/, Fiber.current.to_s)
end
end

0 comments on commit 0465916

Please sign in to comment.