mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* eval.c (thgroup_add): no warning for terminated threads.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
169300a4f8
commit
e02b469de1
8 changed files with 88 additions and 26 deletions
23
ChangeLog
23
ChangeLog
|
@ -1,3 +1,7 @@
|
||||||
|
Thu Jul 24 13:32:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* eval.c (thgroup_add): no warning for terminated threads.
|
||||||
|
|
||||||
Thu Jul 24 13:09:26 2003 Tanaka Akira <akr@m17n.org>
|
Thu Jul 24 13:09:26 2003 Tanaka Akira <akr@m17n.org>
|
||||||
|
|
||||||
* lib/pathname.rb: added.
|
* lib/pathname.rb: added.
|
||||||
|
@ -39,6 +43,14 @@ Thu Jul 24 03:41:30 2003 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
* ext/tcltklib/tcltklib.c (ip_init): need at least one statement after
|
* ext/tcltklib/tcltklib.c (ip_init): need at least one statement after
|
||||||
label.
|
label.
|
||||||
|
|
||||||
|
Thu Jul 24 01:48:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* lib/cgi.rb (CGI::QueryExtension::[]): should return StringIO (or
|
||||||
|
Tempfile) for multipart/form.
|
||||||
|
|
||||||
|
* variable.c (rb_define_const): give warning for non constant
|
||||||
|
name. [ruby-core:01287]
|
||||||
|
|
||||||
Thu Jul 24 01:51:08 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
Thu Jul 24 01:51:08 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
||||||
|
|
||||||
* lib/webrick: imported.
|
* lib/webrick: imported.
|
||||||
|
@ -58,6 +70,10 @@ Wed Jul 23 23:06:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
|
||||||
|
|
||||||
* file.c (DOSISH): better Cygwin support.
|
* file.c (DOSISH): better Cygwin support.
|
||||||
|
|
||||||
|
Wed Jul 23 19:13:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* string.c (rb_str_split_m): the receiver may be empty string.
|
||||||
|
|
||||||
Wed Jul 23 18:43:00 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
|
Wed Jul 23 18:43:00 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
|
||||||
|
|
||||||
* lib/erb.rb: import erb-2.0.4b1.
|
* lib/erb.rb: import erb-2.0.4b1.
|
||||||
|
@ -23203,5 +23219,10 @@ Wed Aug 13 17:51:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
* version 1.1 alpha0 released.
|
* version 1.1 alpha0 released.
|
||||||
|
|
||||||
Local variables:
|
Local variables:
|
||||||
add-log-time-format: current-time-string
|
add-log-time-format: (lambda ()
|
||||||
|
(let* ((time (current-time))
|
||||||
|
(diff (+ (cadr time) 32400))
|
||||||
|
(lo (% diff 65536))
|
||||||
|
(hi (+ (car time) (/ diff 65536))))
|
||||||
|
(format-time-string "%c" (list hi lo) t)))
|
||||||
end:
|
end:
|
||||||
|
|
4
eval.c
4
eval.c
|
@ -9024,7 +9024,6 @@ rb_thread_kill(thread)
|
||||||
if (th == th->next || th == main_thread) rb_exit(0);
|
if (th == th->next || th == main_thread) rb_exit(0);
|
||||||
|
|
||||||
rb_thread_ready(th);
|
rb_thread_ready(th);
|
||||||
th->thgroup = 0;
|
|
||||||
th->status = THREAD_TO_KILL;
|
th->status = THREAD_TO_KILL;
|
||||||
if (!rb_thread_critical) rb_thread_schedule();
|
if (!rb_thread_critical) rb_thread_schedule();
|
||||||
return thread;
|
return thread;
|
||||||
|
@ -9965,8 +9964,7 @@ thgroup_add(group, thread)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!th->thgroup) {
|
if (!th->thgroup) {
|
||||||
rb_warn("terminated thread");
|
return Qnil;
|
||||||
return group;
|
|
||||||
}
|
}
|
||||||
if (OBJ_FROZEN(th->thgroup)) {
|
if (OBJ_FROZEN(th->thgroup)) {
|
||||||
rb_raise(rb_eThreadError, "can't move from the frozen thread group");
|
rb_raise(rb_eThreadError, "can't move from the frozen thread group");
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
require 'mkmf'
|
require 'mkmf'
|
||||||
|
|
||||||
$CPPFLAGS += " -Dss_family=__ss_family -Dss_len=__ss_len"
|
|
||||||
|
|
||||||
case RUBY_PLATFORM
|
case RUBY_PLATFORM
|
||||||
when /bccwin32/
|
when /bccwin32/
|
||||||
test_func = "WSACleanup"
|
test_func = "WSACleanup"
|
||||||
|
@ -150,6 +148,29 @@ main()
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
$CFLAGS="-DHAVE_SOCKADDR_STORAGE "+$CFLAGS
|
$CFLAGS="-DHAVE_SOCKADDR_STORAGE "+$CFLAGS
|
||||||
|
else # doug's fix, NOW add -Dss_family... only if required!
|
||||||
|
$CPPFLAGS += " -Dss_family=__ss_family -Dss_len=__ss_len"
|
||||||
|
if try_link(<<EOF)
|
||||||
|
#ifdef _WIN32
|
||||||
|
# include <windows.h>
|
||||||
|
# include <winsock.h>
|
||||||
|
#else
|
||||||
|
# include <sys/types.h>
|
||||||
|
# include <netdb.h>
|
||||||
|
# include <string.h>
|
||||||
|
# include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
struct sockaddr_storage ss;
|
||||||
|
|
||||||
|
ss.ss_family;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
$CFLAGS="-DHAVE_SOCKADDR_STORAGE "+$CFLAGS
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if try_link(<<EOF)
|
if try_link(<<EOF)
|
||||||
|
|
12
gc.c
12
gc.c
|
@ -1536,20 +1536,26 @@ run_final(obj)
|
||||||
int status, critical_save;
|
int status, critical_save;
|
||||||
VALUE args[2], table;
|
VALUE args[2], table;
|
||||||
|
|
||||||
critical_save = rb_thread_critical;
|
|
||||||
rb_thread_critical = Qtrue;
|
|
||||||
args[1] = rb_ary_new3(1, rb_obj_id(obj)); /* make obj into id */
|
args[1] = rb_ary_new3(1, rb_obj_id(obj)); /* make obj into id */
|
||||||
for (i=0; i<RARRAY(finalizers)->len; i++) {
|
for (i=0; i<RARRAY(finalizers)->len; i++) {
|
||||||
args[0] = RARRAY(finalizers)->ptr[i];
|
args[0] = RARRAY(finalizers)->ptr[i];
|
||||||
|
critical_save = rb_thread_critical;
|
||||||
|
rb_thread_critical = Qtrue;
|
||||||
rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status);
|
rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status);
|
||||||
|
rb_thread_critical = critical_save;
|
||||||
|
CHECK_INTS;
|
||||||
}
|
}
|
||||||
|
CHECK_INTS;
|
||||||
if (finalizer_table && st_delete(finalizer_table, &obj, &table)) {
|
if (finalizer_table && st_delete(finalizer_table, &obj, &table)) {
|
||||||
for (i=0; i<RARRAY(table)->len; i++) {
|
for (i=0; i<RARRAY(table)->len; i++) {
|
||||||
args[0] = RARRAY(table)->ptr[i];
|
args[0] = RARRAY(table)->ptr[i];
|
||||||
|
critical_save = rb_thread_critical;
|
||||||
|
rb_thread_critical = Qtrue;
|
||||||
rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status);
|
rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status);
|
||||||
|
rb_thread_critical = critical_save;
|
||||||
|
CHECK_INTS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rb_thread_critical = critical_save;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
18
lib/cgi.rb
18
lib/cgi.rb
|
@ -800,7 +800,7 @@ convert string charset, and set language to "ja".
|
||||||
body = Tempfile.new("CGI")
|
body = Tempfile.new("CGI")
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
require "stringio" if not defined? StringIO
|
require "stringio"
|
||||||
body = StringIO.new
|
body = StringIO.new
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
require "tempfile"
|
require "tempfile"
|
||||||
|
@ -917,6 +917,7 @@ convert string charset, and set language to "ja".
|
||||||
if ("POST" == env_table['REQUEST_METHOD']) and
|
if ("POST" == env_table['REQUEST_METHOD']) and
|
||||||
%r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|n.match(env_table['CONTENT_TYPE'])
|
%r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|n.match(env_table['CONTENT_TYPE'])
|
||||||
boundary = $1.dup
|
boundary = $1.dup
|
||||||
|
@multipart = true
|
||||||
@params = read_multipart(boundary, Integer(env_table['CONTENT_LENGTH']))
|
@params = read_multipart(boundary, Integer(env_table['CONTENT_LENGTH']))
|
||||||
else
|
else
|
||||||
@params = CGI::parse(
|
@params = CGI::parse(
|
||||||
|
@ -947,7 +948,6 @@ convert string charset, and set language to "ja".
|
||||||
super(str)
|
super(str)
|
||||||
end
|
end
|
||||||
def [](idx)
|
def [](idx)
|
||||||
p caller(1)
|
|
||||||
warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
|
warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
|
@ -964,8 +964,17 @@ convert string charset, and set language to "ja".
|
||||||
def [](key)
|
def [](key)
|
||||||
params = @params[key]
|
params = @params[key]
|
||||||
value = params[0]
|
value = params[0]
|
||||||
value ||= ""
|
if @multipart
|
||||||
Value.new(value,params)
|
if value
|
||||||
|
return value
|
||||||
|
elsif defined? StringIO
|
||||||
|
StringIO.new("")
|
||||||
|
else
|
||||||
|
Tempfile.new("CGI")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Value.new(value || "", params)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def keys(*args)
|
def keys(*args)
|
||||||
|
@ -1931,6 +1940,7 @@ The hash keys are case sensitive. Ask the samples.
|
||||||
end
|
end
|
||||||
|
|
||||||
extend QueryExtension
|
extend QueryExtension
|
||||||
|
@multipart = false
|
||||||
if "POST" != env_table['REQUEST_METHOD']
|
if "POST" != env_table['REQUEST_METHOD']
|
||||||
initialize_query() # set @params, @cookies
|
initialize_query() # set @params, @cookies
|
||||||
else
|
else
|
||||||
|
|
|
@ -21,27 +21,26 @@ module IRB
|
||||||
LOCALE_DIR = "/lc/"
|
LOCALE_DIR = "/lc/"
|
||||||
|
|
||||||
def initialize(locale = nil)
|
def initialize(locale = nil)
|
||||||
@lang = locale || ENV["IRB_LANG"] || ENV["LC_MESSAGES"] || ENV["LC_ALL"] || ENV["LANG"]
|
@lang = locale || ENV["IRB_LANG"] || ENV["LC_MESSAGES"] || ENV["LC_ALL"] || ENV["LANG"] || "C"
|
||||||
@lang = "C" unless @lang
|
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :lang
|
attr_reader :lang
|
||||||
|
|
||||||
@@LC2KCONV = {
|
def lc2kconv(lang)
|
||||||
# "ja" => Kconv::JIS,
|
case lang
|
||||||
# "ja_JP" => Kconv::JIS,
|
when "ja_JP.ujis", "ja_JP.euc", "ja_JP.eucJP"
|
||||||
"ja_JP.ujis" => Kconv::EUC,
|
Kconv::EUC
|
||||||
"ja_JP.euc" => Kconv::EUC,
|
when "ja_JP.sjis", "ja_JP.SJIS"
|
||||||
"ja_JP.eucJP" => Kconv::EUC,
|
Kconv::SJIS
|
||||||
"ja_JP.sjis" => Kconv::SJIS,
|
end
|
||||||
"ja_JP.SJIS" => Kconv::SJIS,
|
end
|
||||||
}
|
private :lc2kconv
|
||||||
|
|
||||||
def String(mes)
|
def String(mes)
|
||||||
mes = super(mes)
|
mes = super(mes)
|
||||||
case @lang
|
case @lang
|
||||||
when /^ja/
|
when /^ja/
|
||||||
mes = Kconv::kconv(mes, @@LC2KCONV[@lang])
|
mes = Kconv::kconv(mes, lc2kconv(@lang))
|
||||||
else
|
else
|
||||||
mes
|
mes
|
||||||
end
|
end
|
||||||
|
|
6
string.c
6
string.c
|
@ -2557,7 +2557,11 @@ rb_str_split_m(argc, argv, str)
|
||||||
if (rb_scan_args(argc, argv, "02", &spat, &limit) == 2) {
|
if (rb_scan_args(argc, argv, "02", &spat, &limit) == 2) {
|
||||||
lim = NUM2INT(limit);
|
lim = NUM2INT(limit);
|
||||||
if (lim <= 0) limit = Qnil;
|
if (lim <= 0) limit = Qnil;
|
||||||
else if (lim == 1) return rb_ary_new3(1, str);
|
else if (lim == 1) {
|
||||||
|
if (RSTRING(str)->len == 0)
|
||||||
|
return rb_ary_new2(0);
|
||||||
|
return rb_ary_new3(1, str);
|
||||||
|
}
|
||||||
i = 1;
|
i = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1548,6 +1548,9 @@ rb_define_const(klass, name, val)
|
||||||
{
|
{
|
||||||
ID id = rb_intern(name);
|
ID id = rb_intern(name);
|
||||||
|
|
||||||
|
if (!rb_is_const_id(id)) {
|
||||||
|
rb_warn("rb_define_const: invalide name `%s' for constant", name);
|
||||||
|
}
|
||||||
if (klass == rb_cObject) {
|
if (klass == rb_cObject) {
|
||||||
rb_secure(4);
|
rb_secure(4);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue