From: Tadashi Saito Date: 2005-09-08T13:14:59+09:00 Subject: [ruby-dev:26985] Re: string.c中の文字検索 斎藤と申します。お返事遅くなりました。 On Fri, 2 Sep 2005 14:10:31 +0900 "H.Yamamoto" 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; -- 斎藤ただし