diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | eval.c | 11 | ||||
-rw-r--r-- | ext/extmk.rb.in | 19 | ||||
-rw-r--r-- | io.c | 7 | ||||
-rw-r--r-- | lib/mkmf.rb | 24 |
5 files changed, 57 insertions, 9 deletions
@@ -1,3 +1,8 @@ +Wed Aug 21 16:43:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org> + + * eval.c (rb_thread_cleanup): should not modify the global + variable curr_thread. + Wed Aug 21 16:14:26 2002 WATANABE Hirofumi <eban@ruby-lang.org> * configure.in: set ac_cv_func__setjmp to "no" on Cygwin. @@ -8866,13 +8866,14 @@ rb_thread_wait_other_threads() static void rb_thread_cleanup() { - rb_thread_t th; + rb_thread_t curr, th; - while (curr_thread->status == THREAD_KILLED) { - curr_thread = curr_thread->prev; + curr = curr_thread; + while (curr->status == THREAD_KILLED) { + curr = curr_thread->prev; } - FOREACH_THREAD(th) { + FOREACH_THREAD_FROM(curr, th) { if (th->status != THREAD_KILLED) { rb_thread_ready(th); th->gid = 0; @@ -8883,7 +8884,7 @@ rb_thread_cleanup() } } } - END_FOREACH(th); + END_FOREACH_FROM(curr, th); } int rb_thread_critical; diff --git a/ext/extmk.rb.in b/ext/extmk.rb.in index a2f1a2cbf6..cebb115214 100644 --- a/ext/extmk.rb.in +++ b/ext/extmk.rb.in @@ -295,6 +295,25 @@ SRC return true end +def find_executable(bin, path = nil) + if path.nil? + path = ENV['PATH'].split(Config::CONFIG['PATH_SEPARATOR']) + else + path = path.split(Config::CONFIG['PATH_SEPARATOR']) + end + + bin += "@EXEEXT@" + for dir in path + file = File.join(dir, bin) + if FileTest.executable?(file) + return file + else + next + end + end + return nil +end + def arg_config(config, default=nil) unless defined? $configure_args $configure_args = {} @@ -2378,10 +2378,9 @@ static VALUE rb_io_putc(io, ch) VALUE io, ch; { - char c[2]; - c[0] = NUM2CHR(ch); - c[1] = '\0'; - rb_io_write(io, rb_str_new(c, 1)); + char c = NUM2CHR(ch); + + rb_io_write(io, rb_str_new(&c, 1)); return ch; } diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 58201d02a7..bdedce5482 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -351,6 +351,30 @@ SRC return true end +def find_executable(bin, path = nil) + printf "checking for %s... ", bin + STDOUT.flush + + if path.nil? + path = ENV['PATH'].split(Config::CONFIG['PATH_SEPARATOR']) + else + path = path.split(Config::CONFIG['PATH_SEPARATOR']) + end + + bin += Config::CONFIG['EXEEXT'] + for dir in path + file = File.join(dir, bin) + if FileTest.executable?(file) + print "yes\n" + return file + else + next + end + end + print "no\n" + return nil +end + def arg_config(config, default=nil) $configure_args.fetch(config, default) end |