diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-05-19 15:45:46 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-05-19 15:45:46 +0000 |
commit | 7e35911e105409fabe48dc2a6214479b6a6ffa24 (patch) | |
tree | 5b28440687c1701389b14598454e99aee9a925ba /ext/pty | |
parent | e08bc0a22ae6c2d2ac0664d82675ca81a30df607 (diff) |
* ext/pty/pty.c (pty_finalize_syswait): join (using Thread#value)
before detach pid. [ruby-talk:71519]
* eval.c (PUSH_FRAME): save outer ruby_block. [ruby-list:37677],
[ruby-dev:20202]
* eval.c (BEGIN_CALLARGS): restore outer block by using
ruby_block->outer.
* eval.c (block_pass): do not alter block->prev, but block->outer.
* array.c (get_inspect_tbl): warning on wrong condition.
* eval.c (localjump_xvalue): renamed exitstatus to exit_value
since it's not exit "status" after all.
* eval.c (localjump_error): add reason to LocalJumpError.
* compar.c (rb_cmpint): raise error via rb_cmperr(), if cmp value
is nil. now take new 2 arguments.
* time.c (time_cmp): 2003-05-16 fix was incomplete.
(ruby-bugs-ja:PR#458)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/pty')
-rw-r--r-- | ext/pty/pty.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/pty/pty.c b/ext/pty/pty.c index 3189b9ae65..cea0de50a2 100644 --- a/ext/pty/pty.c +++ b/ext/pty/pty.c @@ -300,6 +300,7 @@ pty_finalize_syswait(info) struct pty_info *info; { rb_thread_kill(info->thread); + rb_funcall(info->thread, rb_intern("value"), 0); rb_detach_process(info->child_pid); return Qnil; } @@ -438,9 +439,9 @@ pty_getpty(argc, argv, self) thinfo.thread = rb_thread_create(pty_syswait, (void*)&info); thinfo.child_pid = info.child_pid; + rb_thread_schedule(); if (rb_block_given_p()) { - rb_ensure(rb_yield, res, pty_finalize_syswait, (VALUE)&thinfo); return Qnil; } |