[#19449] new keyword once — "K.Kosako" <kosako@...>
String#indexにKarp-Rabinアルゴリズムを導入しても、それほど速くならないのは、
[#19457] equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org>
ふと気がついたのですが、
まつもと ゆきひろです
In article <1044245817.592933.31973.nullmailer@picachu.netlab.jp>,
In article <1044245817.592933.31973.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1044329220.257740.28127.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1044331431.138035.28173.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1044332948.099873.28206.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1044338964.502066.28474.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
まつもと ゆきひろです
さらに気が付いたのですが、
まつもと ゆきひろです
あー、言葉が足りなかったことに気がつきました。
まつもと ゆきひろです
[#19463] Re: [ruby-cvs] ruby: * re.c (rb_memsearch): algolithm body of String#index. — "Akinori MUSHA" <knu@...>
At Mon, 3 Feb 2003 05:34:15 +0000,
[#19494] [Oniguruma] Version 1.7 — "K.Kosako" <kosako@...>
ftp.ruby-lang.orgに、onigd20030204.tar.gzを置きました。
[#19498] cpp in mkmf (Re: Problems building mysql ruby 2.4.4 on 1.8) — nobu.nakada@...
なかだです。
[#19510] define_method+super causes replacing self — Minero Aoki <aamine@...>
あおきです。
[#19514] [Oniguruma] Version 1.7.1 — "K.Kosako" <kosako@...>
ftp.ruby-lang.orgに、onigd20030207.tar.gzを置きました。
MoonWolfです。
MoonWolfです。
[#19539] FileUtils.pwd — Tanaka Akira <akr@...17n.org>
ふと気が付いたのですが、ChangeLog の
[#19548] [PATCH] file.c for (PR#389) and (PR#390) — nobu.nakada@...
なかだです。
まつもと ゆきひろです
From: nobu.nakada@nifty.ne.jp
なかだです。
From: nobu.nakada@nifty.ne.jp
From: pegacorn@jcom.home.ne.jp
[#19562] Fw: Ruby 1.8.0 bugs — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
MoonWolfです。
[#19578] target host type と RUBY_PLATFORM — pegacorn@...
cygwin 環境で
まつもと ゆきひろです
From: matz@ruby-lang.org (Yukihiro Matsumoto)
まつもと ゆきひろです
From: matz@ruby-lang.org (Yukihiro Matsumoto)
まつもと ゆきひろです
[#19603] 1.6.8でprotected/privateなメソッドがスコープ外から見えてしまう — NISHI Takao <zophos@...9.com>
にし@おかやまです。
[#19617] module A::B — "K.Kosako" <kosako@...>
現在の実装で、class A::Bの場合に、Aをcref環境に積まないのは、
[#19626] Re: [ruby-cvs] ruby: * eval.c (rb_thread_remove): thread may die in the process of — nobu.nakada@...
なかだです。
[#19638] [Oniguruma] Version 1.8.0 — "K.Kosako" <kosako@...>
ftp.ruby-lang.orgに、onigd20030222.tar.gzを置きました。
[#19648] Re: SEGV at search_method in eval.c (PR#400) — nobu.nakada@...
なかだです。
[#19655] Fw: Debugger Not Working — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#19665] Custom node — Shinya Hayakawa <tetryl@...>
はじめまして。早川と申します。
[#19668] File.chomp — Shin-ichiro HARA <sinara@...>
原です。
なかだです。
こんにちは、なかむら(う)です。
わたなべです。
[ruby-dev:19565] Re: Fw: Ruby 1.8.0 bugs
なかだです。
At Fri, 14 Feb 2003 11:09:23 +0900,
Yukihiro Matsumoto wrote:
> |> 1) line numbers reported by error messages are too small.
> |> 2) file reading/writing is inconsistent.
> |
> |textmodeでmountしたディレクトリで改行コードCR+LFで実行すると、再現できました。
> |binmodeでmountしなおしたほうが不具合に遭いにくいと思います。
>
> ありがとうございます。binmodeでmountしたほうが良いというのは
> 以前にも聞いたことがありますが、
>
> * これは一般的にそういうものなのでしょうか
> * Ruby側で対処する必要があるものでしょうか
一般的にはバッファ内を調べて読む長さを決めるなんてことはしませ
んから、Ruby側で対処する必要があると思います。
(A) バッファ内の検査を止める
(B) cygwinでは常にバイナリモードにする
(C) テキストモードだったら適当にfread()する長さを減らす。
結構I/Oのパフォーマンスに効いてくるのでできればAは避けたいです。
とりあえずCのパッチも作ってみましたが、なんとなくBがいいような
気もして来ました。
Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.185
diff -u -2 -p -r1.185 io.c
--- io.c 9 Feb 2003 18:36:22 -0000 1.185
+++ io.c 14 Feb 2003 03:02:58 -0000
@@ -848,4 +848,11 @@ io_read(argc, argv, io)
}
+#if defined(__CYGWIN__) && defined(__SCLE)
+#define LINE_CONV_MODE(f) ((f)->_flags & __SCLE)
+#endif
+#ifndef LINE_CONV_MODE
+#define LINE_CONV_MODE(f) (0)
+#endif
+
static int
appendline(fptr, delim, strp)
@@ -870,5 +877,11 @@ appendline(fptr, delim, strp)
const char *e = memchr(p, delim, pending);
long last = 0, len = (c != EOF);
- if (e) pending = e - p + 1;
+ if (e) {
+ pending = e - p + 1;
+#ifdef LINE_CONV_MODE
+ if (LINE_CONV_MODE(f))
+ pending = (pending + 1) >> 1;
+#endif
+ }
len += pending;
if (!NIL_P(str)) {
@@ -878,5 +891,4 @@ appendline(fptr, delim, strp)
else {
*strp = str = rb_str_buf_new(len);
- RSTRING(str)->len = len;
RSTRING(str)->ptr[len] = '\0';
}
@@ -884,6 +896,26 @@ appendline(fptr, delim, strp)
RSTRING(str)->ptr[last++] = c;
}
- fread(RSTRING(str)->ptr + last, 1, pending, f); /* must not fail */
- if (e) return delim;
+ len = fread(RSTRING(str)->ptr + last, 1, pending, f);
+ if (len < 0) rb_sys_fail(fptr->path);
+ if (len == 0) return EOF;
+ RSTRING(str)->len = last += len;
+ if (e && (!LINE_CONV_MODE(f) || RSTRING(str)->ptr[last - 1] == delim))
+ return delim;
+#ifdef LINE_CONV_MODE
+ if (LINE_CONV_MODE(f)) {
+ while ((pending = READ_DATA_PENDING_COUNT(f)) > 0) {
+ p = READ_DATA_PENDING_PTR(f);
+ e = memchr(p, delim, pending);
+ if (e) pending = ((e - p) >> 1) + 1;
+ rb_str_resize(str, last + pending);
+ len = fread(RSTRING(str)->ptr + last, 1, pending, f);
+ if (len < 0) rb_sys_fail(fptr->path);
+ if (len == 0) return EOF;
+ RSTRING(str)->len = last += len;
+ if (e && RSTRING(str)->ptr[last - 1] == delim)
+ return delim;
+ }
+ }
+#endif
}
else if (c != EOF) {
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦