diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-08-29 14:44:08 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-08-29 14:44:08 +0000 |
commit | e7ddd1fdc3c7807cae6ffa3154bef585c7a4ee8c (patch) | |
tree | 0066ddd3ce388e24e7ed8ad970120967b4caf1fa | |
parent | 7c854d6d5e1611f0d4625637661dc03f49cbc942 (diff) | |
download | ruby-e7ddd1fdc3c7807cae6ffa3154bef585c7a4ee8c.tar.gz |
* internal.h (rb_last_status_clear): declared.
* process.c (rb_last_status_clear): exported.
(rb_f_system): call rb_last_status_clear.
* io.c (rb_f_backquote): call rb_last_status_clear.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | internal.h | 1 | ||||
-rw-r--r-- | io.c | 1 | ||||
-rw-r--r-- | process.c | 3 |
4 files changed, 13 insertions, 1 deletions
@@ -1,3 +1,12 @@ +Wed Aug 29 23:42:59 2012 Tanaka Akira <akr@fsij.org> + + * internal.h (rb_last_status_clear): declared. + + * process.c (rb_last_status_clear): exported. + (rb_f_system): call rb_last_status_clear. + + * io.c (rb_f_backquote): call rb_last_status_clear. + Wed Aug 29 22:01:15 2012 Tanaka Akira <akr@fsij.org> * process.c (rb_f_system): check failures of waitpid. diff --git a/internal.h b/internal.h index ed4864c1eb..57c1fc8cfa 100644 --- a/internal.h +++ b/internal.h @@ -222,6 +222,7 @@ struct rb_execarg { #define ARGVSTR2ARGV(argv_str) ((char **)RSTRING_PTR(argv_str) + 1) rb_pid_t rb_fork_ruby(int *status); +void rb_last_status_clear(void); /* rational.c */ VALUE rb_lcm(VALUE x, VALUE y); @@ -7808,6 +7808,7 @@ rb_f_backquote(VALUE obj, VALUE str) rb_io_t *fptr; SafeStringValue(str); + rb_last_status_clear(); port = pipe_open_s(str, "r", FMODE_READABLE|DEFAULT_TEXTMODE, NULL); if (NIL_P(port)) return rb_str_new(0,0); @@ -226,7 +226,7 @@ rb_last_status_set(int status, rb_pid_t pid) rb_iv_set(th->last_status, "pid", PIDT2NUM(pid)); } -static void +void rb_last_status_clear(void) { GET_THREAD()->last_status = Qnil; @@ -3656,6 +3656,7 @@ rb_f_system(int argc, VALUE *argv) #ifdef SIGCHLD RETSIGTYPE (*chfunc)(int); + rb_last_status_clear(); chfunc = signal(SIGCHLD, SIG_DFL); #endif pid = rb_spawn_internal(argc, argv, NULL, 0); |