From: KIMURA Koichi Date: 2006-11-29T12:22:04+09:00 Subject: [ruby-dev:29974] Re: BUG: Incorrect handling of Ignorecase matching (regex.c of 1.8.5) 木村です。 On Wed, 29 Nov 2006 10:30:01 +0900 KIMURA Koichi wrote: > パッチについてはちょっと考え直します。 作り直しました。 re_compile_fastmap は、一つのパターンを内部表現に変換するときに一回だけ 呼ばれるものなので、例のフラグは関数のauto 変数として保持しても大丈夫だ と思います。 あとfastmapに格納される内容が1,2の2通りあるので、それを潰さないように しました。 #とここまで書いたら、魔神からパッチが出てしまった。 --- regex.c.orig 2006-08-07 12:43:42.000000000 +0900 +++ regex.c 2006-11-29 11:43:49.524937500 +0900 @@ -2788,6 +2788,8 @@ re_compile_fastmap(bufp) unsigned char **stacke = stackb + NFAILURES; int options = bufp->options; + int found_casefold = 0; + memset(fastmap, 0, (1 << BYTEWIDTH)); bufp->fastmap_accurate = 1; bufp->can_be_null = 0; @@ -2836,6 +2838,19 @@ re_compile_fastmap(bufp) case casefold_on: bufp->options |= RE_MAY_IGNORECASE; options |= RE_OPTION_IGNORECASE; + { + if (!found_casefold) { + char *p = fastmap; + int i; + for (i=0; i<=(1<