From: "NARUSE, Yui" Date: 2008-07-30T10:48:57+09:00 Subject: [ruby-dev:35692] Re: char_casecmp in dir.c At Tue, 29 Jul 2008 11:27:52 +0900, 成瀬です。 Tanaka Akira wrote: > > dir.c の char_casecmp で、 > > static int > char_casecmp(const char *p1, const char *p2, rb_encoding *enc, const int nocase) > { > const char *p1end, *p2end; > int c1, c2; > > if (!*p1) return *p1; > if (!*p2) return -*p2; > ... > > というところの、 > > if (!*p2) return -*p2; > > は奇妙な気がします。 > > return -*p2 が動作するのは !*p2 のとき、すなわち *p2 == 0 の > ときですが、そうすると -*p2 は常に 0 になります。それなのに > わざわざ負符号をつけてあるってのはどういう意図なんでしょう? > -- return *p1 と return -*p2 が逆だったので直しました。