[#34556] /(.)(.)/.match("ab").select {|v| true } is empty — Tanaka Akira <akr@...>
以下のように、MatchData#select でブロックが常に真なのに結果
[#34567] write to broken pipe on Linux — Nobuyoshi Nakada <nobu@...>
なかだです。
まつもと ゆきひろです
なかだです。
[#34571] Re: [ruby-cvs:23495] Ruby:r16255 (ruby_1_8, trunk): * range.c (range_step): allow float step bigger than zero but less — Tanaka Akira <akr@...>
In article <200805011435.m41EZFBL003014@ci.ruby-lang.org>,
[#34605] Array#mapがEnumeratorを返さない — rubikitch@...
るびきちです。
[#34623] Marshal.load( Marshal.dump( Float ) )の不一致@1.8 — "H.Holon" <holon@...>
H.Holonです。
[#34646] break in lambda — Tanaka Akira <akr@...>
lambda 直下に break があったとき、なにごともなかったかのよう
[#34647] fork 不可能な環境での test_argv0_noarg — wanabe <s.wanabe@...>
ワナベと申します。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
須藤です。
[#34648] Bignum のメソッドからの bigzero_p — wanabe <s.wanabe@...>
ワナベと申します。
[#34676] removing Array#nitems {} — "Akinori MUSHA" <knu@...>
Array#nitems はnilでない要素を数えるメソッドですが、ブロックを
[#34691] ext/openssl and newer OpenSSL — Takahiro Kambe <taca@...>
こんにちは。
[#34692] [ruby1.9] fork と thread — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#34726] memory leak by Array#sort! — Tanaka Akira <akr@...>
以下のように、Array#sort! の中で配列を変更するとメモりリークします。
[#34739] net/imap uses Thread#raise — Tanaka Akira <akr@...>
net/imap が原因だと思うのですが、
前田です。
In article <704d5db90805210204o7aa80c00lfeb13a34230c2c03@mail.gmail.com>,
なかだです。
[#34741] Date.parse("##-##-##") — "Akinori MUSHA" <knu@...>
Date.parse("##.##.##") の ruby_1_8 における挙動が trunk とも
> Date.parse("##.##.##") の ruby_1_8 における挙動が trunk とも
[#34742] Ruby 1.8.7-preview3 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.7-preview3 をリリースしました。
お疲れ様です。
At Mon, 19 May 2008 11:28:10 +0900,
In message <86k5hrow30.knu@iDaemons.org>
もう一つ追加です。
At Mon, 19 May 2008 18:55:42 +0900,
[#34751] benchmark result of reverse_complement — SASADA Koichi <ko1@...>
ささだです.
[#34758] Re: [ruby-cvs:23717] Ruby:r16477 (trunk): * regparse.c (PINC): use optimized enclen() instead of — SASADA Koichi <ko1@...>
ささだです.
遠藤と申します。
[#34768] Improvement of lazy sweep patch — authorNari <authornari@...>
authorNariです。
まつもと ゆきひろです
[#34775] (1..5).step(SimpleDelegator.new(1.5)) {|x| p x} differ from (1..5).step(1.5) {|x| p x} — Tanaka Akira <akr@...>
以下のように (1..5).step(1.5) {|x| p x} と
[#34800] Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...>
木村です。
こんにちは、なかむら(う)です。
木村です。
木村です。
こんにちは、なかむら(う)です。
木村です。
こんにちは、なかむら(う)です。
[#34810] -Wall — SASADA Koichi <ko1@...>
ささだです.
[#34830] return value of pp — "Yusuke ENDOH" <mame@...>
遠藤です。
[#34877] [Ruby 1.9 - Bug #11] prelude.c compilation problem on mswin32 — redmine@...
Issue #11 has been updated by Usaku NAKAMURA.
[#34883] [#19002] RUBY_* constants — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#34889] Ruby 1.8.7-preview4 test-all failed in OpenSSL::TestSSL — Nobuhiro IMAI <nov@...>
いまいです。
Nobuhiro IMAI さんは書きました:
At Sat, 31 May 2008 21:06:47 +0900,
この話題についていろいろ試していて気付いたのですが
[ruby-dev:34671] [ruby-Bugs:19377] Marshall.load of serialized instance of singleton class returns new instance
なかだです。
# 出したつもりで忘れてたようです。
[ruby-Bugs:19377]の問題は、SingletonClassMethods#_loadがprivate
になっているのでrb_respond_toがfalseを返すということが原因です。
singleton.rbからprivateを取り除くのでもいいのですが、実際に呼び
出すrb_funcallはprivateでも無関係に呼び出してしまうわけなので、
privateメソッドも探すべきなんではないでしょうか。
そもそも、こういった内部的に呼ばれるメソッドの可視性は、どうすべ
きなのでしょうか。
Index: marshal.c
===================================================================
--- marshal.c (revision 15931)
+++ marshal.c (working copy)
@@ -590,5 +590,5 @@ w_object(VALUE obj, struct dump_arg *arg
}
- if (rb_respond_to(obj, s_mdump)) {
+ if (rb_obj_respond_to(obj, s_mdump, Qtrue)) {
VALUE v;
@@ -599,5 +599,5 @@ w_object(VALUE obj, struct dump_arg *arg
return;
}
- if (rb_respond_to(obj, s_dump)) {
+ if (rb_obj_respond_to(obj, s_dump, Qtrue)) {
VALUE v;
st_table *ivtbl2 = 0;
@@ -746,5 +746,5 @@ w_object(VALUE obj, struct dump_arg *arg
VALUE v;
- if (!rb_respond_to(obj, s_dump_data)) {
+ if (!rb_obj_respond_to(obj, s_dump_data, Qtrue)) {
rb_raise(rb_eTypeError,
"no marshal_dump is defined for class %s",
@@ -841,5 +841,5 @@ marshal_dump(int argc, VALUE *argv)
arg.dest = 0;
if (!NIL_P(port)) {
- if (!rb_respond_to(port, s_write)) {
+ if (!rb_obj_respond_to(port, s_write, Qtrue)) {
type_error:
rb_raise(rb_eTypeError, "instance of IO needed");
@@ -847,5 +847,5 @@ marshal_dump(int argc, VALUE *argv)
arg.str = rb_str_buf_new(0);
arg.dest = port;
- if (rb_respond_to(port, s_binmode)) {
+ if (rb_obj_respond_to(port, s_binmode, Qtrue)) {
rb_funcall2(port, s_binmode, 0, 0);
}
@@ -1392,5 +1392,5 @@ r_object0(struct load_arg *arg, int *ivp
VALUE data;
- if (!rb_respond_to(klass, s_load)) {
+ if (!rb_obj_respond_to(klass, s_load, Qtrue)) {
rb_raise(rb_eTypeError, "class %s needs to have method `_load'",
rb_class2name(klass));
@@ -1419,5 +1419,5 @@ r_object0(struct load_arg *arg, int *ivp
}
}
- if (!rb_respond_to(v, s_mload)) {
+ if (!rb_obj_respond_to(v, s_mload, Qtrue)) {
rb_raise(rb_eTypeError, "instance of %s needs to have method `marshal_load'",
rb_class2name(klass));
@@ -1445,5 +1445,5 @@ r_object0(struct load_arg *arg, int *ivp
{
VALUE klass = path2class(r_unique(arg));
- if (rb_respond_to(klass, s_alloc)) {
+ if (rb_obj_respond_to(klass, s_alloc, Qtrue)) {
static int warn = Qtrue;
if (warn) {
@@ -1460,5 +1460,5 @@ r_object0(struct load_arg *arg, int *ivp
}
v = r_entry(v, arg);
- if (!rb_respond_to(v, s_load_data)) {
+ if (!rb_obj_respond_to(v, s_load_data, Qtrue)) {
rb_raise(rb_eTypeError,
"class %s needs to have instance method `_load_data'",
@@ -1558,10 +1558,11 @@ marshal_load(int argc, VALUE *argv)
rb_scan_args(argc, argv, "11", &port, &proc);
- if (rb_respond_to(port, rb_intern("to_str"))) {
+ v = rb_check_string_type(port);
+ if (!NIL_P(v)) {
arg.taint = OBJ_TAINTED(port); /* original taintedness */
- StringValue(port); /* possible conversion */
+ port = v;
}
- else if (rb_respond_to(port, s_getbyte) && rb_respond_to(port, s_read)) {
- if (rb_respond_to(port, s_binmode)) {
+ else if (rb_obj_respond_to(port, s_getbyte, Qtrue) && rb_obj_respond_to(port, s_read, Qtrue)) {
+ if (rb_obj_respond_to(port, s_binmode, Qtrue)) {
rb_funcall2(port, s_binmode, 0, 0);
}
Index: object.c
===================================================================
--- object.c (revision 15931)
+++ object.c (working copy)
@@ -1893,5 +1893,5 @@ convert_type(VALUE val, const char *tnam
m = rb_intern(method);
- if (!rb_respond_to(val, m)) {
+ if (!rb_obj_respond_to(val, m, Qtrue)) {
if (raise) {
rb_raise(rb_eTypeError, "can't convert %s into %s",
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦