[#36647] test/pathname/test_pathname.rb — TAKANO Mitsuhiro <takano32@...>
高野です。
[#36649] Embedding struct RArray — "Yugui (Yuki Sonoda)" <yugui@...>
-----BEGIN PGP SIGNED MESSAGE-----
[#36672] [Bug #616] instance_eval and Module#to_s — Shyouhei Urabe <redmine@...>
Bug #616: instance_eval and Module#to_s
[#36678] test_process.rb — TAKANO Mitsuhiro <takano32@...>
高野です。
まつもと ゆきひろです
高野です。
[#36685] [Bug #621] When to call Class#inherited — Shyouhei Urabe <redmine@...>
Bug #621: When to call Class#inherited
[#36691] [Bug:1.9] ArgumentError on "%c" % 0x80 — Tanaka Akira <akr@...>
"%c" % 0x80 が例外になります。
[#36697] [Bug:1.9] rb_io_fread does not work — "Yusuke ENDOH" <mame@...>
遠藤です。
[#36704] Assertion failed in array.c on mswin32 Ruby (trunk) — Masaki Suketa <masaki.suketa@...>
助田です。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#36705] ruby1.9 on hppa build problem — Hideki Yamane <henrich@...>
こんにちは、
[#36706] Ruby on Vista — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#36716] [Bug #644] compile error on win32ole with VC++6 — Usaku NAKAMURA <redmine@...>
Bug #644: compile error on win32ole with VC++6
[#36739] r19786 (trunk): * lib/delegate.rb (Delegator): simplified and restored 1.8 — Fujioka <fuj@...>
藤岡です。
[#36750] [Bug #650] Marshal.load raises RegexpError — Shyouhei Urabe <redmine@...>
Bug #650: Marshal.load raises RegexpError
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
Yukihiro Matsumoto さんは書きました:
まつもと ゆきひろです
もとの正規表現にバグがあるのは認めますが、それに巻き込まれてでかいPStore
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
けいじゅ@いしつかです.
卜部です。
けいじゅ@いしつかです.
卜部です。
[#36753] [Bug #651] Regexp.new returns strange regexp object — Shyouhei Urabe <redmine@...>
Bug #651: Regexp.new returns strange regexp object
まつもと ゆきひろです
[#36764] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Martin Duerst <duerst@...>
まつもとさん、こんばんは。
まつもと ゆきひろです
まつもとさん、こんにちは。
In article <6.0.0.20.2.20081019182600.08d852a8@localhost>,
ファイル名は以前の議論の結果「変換可能でしたら変換、そうでなかったら
In article <6.0.0.20.2.20081021093404.0ada7bf8@localhost>,
At 10:47 08/10/21, Tanaka Akira wrote:
[#36768] Re: [ruby-cvs:27042] Ruby:r19824 (trunk): * array.c: recycle shared-array when it isn't referenced. — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
ワナベです。
[#36774] ConverterNotFoundError while making Ruby in Windows(trunk) — Masaki Suketa <masaki.suketa@...>
助田です。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
In article <20081020173718.7FAD.C613B076@garbagecollect.jp>,
[#36789] [Bug #660] 数字を3桁ずつコンマで区切るsprintf書式指定 — "rubikitch ." <redmine@...>
Bug #660: 数字を3桁ずつコンマで区切るsprintf書式指定
[#36801] Marshal.load can't take GZipReader — arton <artonx@...>
artonです。
まつもと ゆきひろです
[#36813] Re: Ruby:r19863 (trunk): * regparse.c (parse_char_class): CCV_SB is only for single — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#36866] [Bug #676] 引数の有無によるIO#readの挙動の違い — _ wanabe <redmine@...>
Bug #676: 引数の有無によるIO#readの挙動の違い
[#36877] [Feature #679] Integer#to_s(:step=>3, :sep=>",") が欲しい — Martin Dürst <redmine@...>
チケット #679 が更新されました。 (by Martin Dürst)
[#36909] trunk SEGV nkf? — "WATANABE Tetsuya" <tetsuya.watanabe@...>
渡辺哲也です。
[#36914] prefix math_* funcs — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
> complex.cで使うために、いくつか数学関数からstaticがとれたようですが、
[#36915] prefix signal_buff — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
[#36917] VMまわりのシンボルにも「rb_」を付けてほしい — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。連投ですみません。
[#36932] [Bug #6] sprintf() of %f on Windows(MSVCRT) — _ wanabe <redmine@...>
チケット #6 が更新されました。 (by _ wanabe)
[#36937] initial value of $. — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#36993] [Bug:1.9] removing Exception#initialize dumps core — "Yusuke ENDOH" <mame@...>
遠藤です。
[#37007] [Bug:1.9] 1+1+1+...+1 dumps core — "Yusuke ENDOH" <mame@...>
遠藤です。
はじめまして、よしおかと申します。
遠藤です。
こんにちは、なかむら(う)です。
[ruby-dev:36955] Re: initial value of $.
なかだです。
At Mon, 27 Oct 2008 16:30:19 +0900,
Yukihiro Matsumoto wrote in [ruby-dev:36954]:
> |いや、直接的な原因はio.cのrb_io_getline_fast()などで増加させ
> |てるからなんですが、ARGFでないかもしれないioからのgetsで増加
> |するのは明らかにおかしい気がします。1.8ではそのようになってい
> |ません。r15663で中田さんが追加したみたいですが。
>
> すみません、過去ログを再確認したらこの挙動は中田さんが追加し
> たわけではないですし、1.8でも$.は増加しますね。あらら。
>
> でも、これがバグであると言う意見は変わりません。
であれば、r19965はrevertしてこんなところでしょうか。
IO#getsやIO#each、IO.foreachなどで$.が更新されることを期待してい
るプログラムは、動かなくなる可能性が高いですが。
Index: io.c
===================================================================
--- io.c (revision 19966)
+++ io.c (working copy)
@@ -132,5 +132,4 @@ struct argf {
int gets_lineno;
int init_p, next_p;
- VALUE lineno;
VALUE argv;
char *inplace;
@@ -1079,7 +1078,4 @@ rb_io_rewind(VALUE io)
GetOpenFile(io, fptr);
if (io_seek(fptr, 0L, 0) < 0) rb_sys_fail_path(fptr->pathv);
- if (io == ARGF.current_file) {
- ARGF.gets_lineno -= fptr->lineno;
- }
fptr->lineno = 0;
@@ -2085,5 +2081,4 @@ rb_io_getline_fast(rb_io_t *fptr, rb_enc
ENC_CODERANGE_SET(str, cr);
fptr->lineno++;
- ARGF.lineno = INT2FIX(fptr->lineno);
return str;
}
@@ -2220,5 +2215,4 @@ rb_io_getline_1(VALUE rs, long limit, VA
if (!nolimit) {
fptr->lineno++;
- ARGF.lineno = INT2FIX(fptr->lineno);
}
}
@@ -5805,5 +5799,4 @@ argf_mark(void *ptr)
rb_gc_mark(p->filename);
rb_gc_mark(p->current_file);
- rb_gc_mark(p->lineno);
rb_gc_mark(p->argv);
rb_gc_mark(p->encs.ecopts);
@@ -5822,5 +5815,5 @@ argf_init(struct argf *p, VALUE v)
p->filename = Qnil;
p->current_file = Qnil;
- p->lineno = INT2FIX(0);
+ p->gets_lineno = 0;
p->argv = v;
}
@@ -5864,5 +5857,4 @@ argf_set_lineno(VALUE argf, VALUE val)
{
ARGF.gets_lineno = NUM2INT(val);
- ARGF.lineno = INT2FIX(ARGF.gets_lineno);
return Qnil;
}
@@ -5871,5 +5863,5 @@ static VALUE
argf_lineno(VALUE argf)
{
- return ARGF.lineno;
+ return INT2FIX(ARGF.gets_lineno);
}
@@ -6050,5 +6042,4 @@ argf_getline(int argc, VALUE *argv, VALU
if (!NIL_P(line)) {
ARGF.gets_lineno++;
- ARGF.lineno = INT2FIX(ARGF.gets_lineno);
}
return line;
@@ -6059,5 +6050,5 @@ argf_lineno_getter(ID id, VALUE *var)
{
VALUE argf = *var;
- return ARGF.lineno;
+ return INT2FIX(ARGF.gets_lineno);
}
@@ -6066,7 +6057,5 @@ argf_lineno_setter(VALUE val, ID id, VAL
{
VALUE argf = *var;
- int n = NUM2INT(val);
- ARGF.gets_lineno = n;
- ARGF.lineno = INT2FIX(n);
+ ARGF.gets_lineno = NUM2INT(val);
}
@@ -6145,5 +6134,4 @@ rb_gets(void)
if (!NIL_P(line)) {
ARGF.gets_lineno++;
- ARGF.lineno = INT2FIX(ARGF.gets_lineno);
}
@@ -7756,9 +7744,18 @@ static VALUE
argf_rewind(VALUE argf)
{
+ rb_io_t *fptr;
+ VALUE io, ret;
+ int lineno = 0;
+
if (!next_argv()) {
rb_raise(rb_eArgError, "no stream to rewind");
}
ARGF_FORWARD(0, 0);
- return rb_io_rewind(ARGF.current_file);
+ io = ARGF.current_file;
+ GetOpenFile(io, fptr);
+ lineno = fptr->lineno;
+ ret = rb_io_rewind(io);
+ ARGF.gets_lineno -= lineno;
+ return ret;
}
Index: test/ruby/test_io.rb
===================================================================
--- test/ruby/test_io.rb (revision 19966)
+++ test/ruby/test_io.rb (working copy)
@@ -800,18 +800,18 @@ class TestIO < Test::Unit::TestCase
ruby("-e", <<-SRC, t.path) do |f|
open(ARGV[0]) do |f|
- p $.
- f.gets; p $.
- f.gets; p $.
- f.lineno = 1000; p $.
- f.gets; p $.
- f.gets; p $.
- f.rewind; p $.
- f.gets; p $.
- f.gets; p $.
- f.gets; p $.
- f.gets; p $.
+ p f.lineno
+ f.gets; p f.lineno
+ f.gets; p f.lineno
+ f.lineno = 1000; p f.lineno
+ f.gets; p f.lineno
+ f.gets; p f.lineno
+ f.rewind; p f.lineno
+ f.gets; p f.lineno
+ f.gets; p f.lineno
+ f.gets; p f.lineno
+ f.gets; p f.lineno
end
SRC
- assert_equal("0,1,2,2,1001,1001,1001,1,2,3,3", f.read.chomp.gsub("\n", ","))
+ assert_equal("0,1,2,1000,1001,1001,0,1,2,3,3", f.read.chomp.gsub("\n", ","))
end
@@ -822,9 +822,9 @@ class TestIO < Test::Unit::TestCase
w.close
end, proc do |r|
- r.gets; assert_equal(1, $.)
- r.gets; assert_equal(2, $.)
- r.lineno = 1000; assert_equal(2, $.)
- r.gets; assert_equal(1001, $.)
- r.gets; assert_equal(1001, $.)
+ r.gets; assert_equal(1, r.lineno)
+ r.gets; assert_equal(2, r.lineno)
+ r.lineno = 1000; assert_equal(1000, r.lineno)
+ r.gets; assert_equal(1001, r.lineno)
+ r.gets; assert_equal(1001, r.lineno)
end)
end
@@ -837,8 +837,8 @@ class TestIO < Test::Unit::TestCase
w.close
end, proc do |r|
- r.readline; assert_equal(1, $.)
- r.readline; assert_equal(2, $.)
- r.lineno = 1000; assert_equal(2, $.)
- r.readline; assert_equal(1001, $.)
+ r.readline; assert_equal(1, r.lineno)
+ r.readline; assert_equal(2, r.lineno)
+ r.lineno = 1000; assert_equal(1000, r.lineno)
+ r.readline; assert_equal(1001, r.lineno)
assert_raise(EOFError) { r.readline }
end)
Index: test/ruby/test_argf.rb
===================================================================
--- test/ruby/test_argf.rb (revision 19966)
+++ test/ruby/test_argf.rb (working copy)
@@ -63,13 +63,13 @@ class TestArgf < Test::Unit::TestCase
a.rewind
b.rewind
- p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["1", 1, "1", 3]
- p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["2", 2, "2", 4]
- p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["3", 3, "3", 5]
- p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["4", 4, "4", 6]
- p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["5", 5, "5", 7]
+ p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["1", 1, "1", 1]
+ p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["2", 2, "2", 2]
+ p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["3", 3, "3", 3]
+ p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["4", 4, "4", 4]
+ p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["5", 5, "5", 5]
a.rewind
b.rewind
- p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["5", 5, "5", 8]
- p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["6", 6, "6", 9]
+ p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["5", 5, "5", 5]
+ p [a.gets.chomp, a.lineno, b.gets.chomp, b.lineno] #=> ["6", 6, "6", 6]
SRC
expected = src.scan(/\#=> *(.*+)/).flatten
@@ -91,8 +91,8 @@ class TestArgf < Test::Unit::TestCase
a.gets; p $. #=> 2
a.gets; p $. #=> 3
- a.rewind; p $. #=> 3
+ a.rewind; p $. #=> 2
a.gets; p $. #=> 3
a.gets; p $. #=> 4
- a.rewind; p $. #=> 4
+ a.rewind; p $. #=> 2
a.gets; p $. #=> 3
a.lineno = 1000; p $. #=> 1000
@@ -112,14 +112,14 @@ class TestArgf < Test::Unit::TestCase
src = <<-SRC
a = ARGF.dup
- a.gets; p $. #=> 1
- a.gets; p $. #=> 2
- a.gets; p $. #=> 1
- a.rewind; p $. #=> 1
- a.gets; p $. #=> 1
- a.gets; p $. #=> 2
- a.gets; p $. #=> 1
- a.lineno = 1000; p $. #=> 1
- a.gets; p $. #=> 2
- a.gets; p $. #=> 2
+ a.gets; p $. #=> 0
+ a.gets; p $. #=> 0
+ a.gets; p $. #=> 0
+ a.rewind; p $. #=> 0
+ a.gets; p $. #=> 0
+ a.gets; p $. #=> 0
+ a.gets; p $. #=> 0
+ a.lineno = 1000; p $. #=> 0
+ a.gets; p $. #=> 0
+ a.gets; p $. #=> 0
$. = 2000
a.gets; p $. #=> 2000
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦