斎藤と申します。お返事遅くなりました。

On Fri, 2 Sep 2005 14:10:31 +0900
"H.Yamamoto" <ocean / m2.ccsnet.ne.jp> wrote:

> たぶん、"\0" を含む文字列(String型)で動くようにするためでしょうね。

なるほど、確かに。言われてみると、その通りですね。
# いろいろ考えても気づかなかった自分… orz

答えていただいて、ありがとうございました。

以下は別の話なのですが、
調べているうちに、missing/strchr.cのstrrchr()に(重要ではないかも
しれませんが)バグ(?)を見つけました。C99(を訳したJIS X 3010:2003)
には、strrchr(s, c)について「sが指す文字列の中で、cが最後に現われる
位置を捜す。終端ナル文字は、文字列の一部とみなす。」とありますが、
missingのstrrchr()の第二引数に0を渡すとNULLが返って来てしまいます。

ということで、それを修正するパッチです。よろしければお使い下さい。

Index: missing/strchr.c
===================================================================
RCS file: /src/ruby/missing/strchr.c,v
retrieving revision 1.3
diff -u -p -r1.3 strchr.c
--- missing/strchr.c    6 Mar 2001 08:17:18 -0000       1.3
+++ missing/strchr.c    8 Sep 2005 04:11:37 -0000
@@ -19,8 +19,10 @@ strrchr(s, c)
     char *s;
     int c;
 {
-    char *save = 0;
+    char *save;
  
+    if (c == 0) return s + strlen(s);
+    save = 0;
     while (*s) {
        if (*s == c)
            save = s;

--
斎藤ただし