From c7c1384e60a9f3dcc65b3516cdde6dcb7be17f60 Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 21 Aug 2002 08:30:09 +0000 Subject: * eval.c (rb_thread_cleanup): should not modify the global variable curr_thread. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ eval.c | 11 ++++++----- ext/extmk.rb.in | 19 +++++++++++++++++++ io.c | 7 +++---- lib/mkmf.rb | 24 ++++++++++++++++++++++++ 5 files changed, 57 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index b988dff1aa..3bc1746618 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Aug 21 16:43:19 2002 Yukihiro Matsumoto + + * eval.c (rb_thread_cleanup): should not modify the global + variable curr_thread. + Wed Aug 21 16:14:26 2002 WATANABE Hirofumi * configure.in: set ac_cv_func__setjmp to "no" on Cygwin. diff --git a/eval.c b/eval.c index 311bd5f097..d269feae6d 100644 --- a/eval.c +++ b/eval.c @@ -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 = {} diff --git a/io.c b/io.c index 01b7e2a72a..0d61e671be 100644 --- a/io.c +++ b/io.c @@ -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 -- cgit v1.2.3