Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 全角文字のフレーズ検索のバグ



竹迫です。

>takesako@xxxxxxxxx wrote:
>> 
>> この件ですが、寺西さんのパッチを当てていない namazu-2.0.12 で試したところ、
>> 環境変数 LANG の値によって、日本語のフレーズ検索が正常に動作したり・
>> しなかったりするようです。
〜略〜
>> まだ詳しくソースを追いかけていないのですが、
>> nmz/wakati.c の nmz_wakati に本質的なバグが
>> 潜んでいるのではないかと思っています。
>
>おそらくは区切りの '\t' を重複して連結することがあるのだと思います。

さきほど、ソースを追っかけてみました。

やはり、nmz_wakati の中で、'\t' を重複して連結していました。

nmz/wakati.c の nmz_wakati は、言語設定が日本語のときのみに
呼び出される関数なので、このような現象になっていたのだと思います。

一応、パッチを作ってみました。(まだ commit はしていません)

namazu-2.0.12-phrase.patch
---------------------------------------------------------------------------
diff -urN namazu-2.0.12-orig/nmz/wakati.c namazu-2.0.12/nmz/wakati.c
--- namazu-2.0.12-orig/nmz/wakati.c     Tue Sep 11 16:59:39 2001
+++ namazu-2.0.12/nmz/wakati.c  Mon Mar 24 19:26:56 2003
@@ -175,9 +175,13 @@
             while(*(key + i) && !nmz_iseuc(*(key + i))) {
                 /* As an initial attempt always success,
                    outer 'for loop' can avoid infinite loop */
+                if (*(key + i) == '\t') {
+                    nmz_chomp(buf);
+                }
                 strncat(buf, key + i, 1);
                 i++;
             }
+            nmz_chomp(buf);
             strcat(buf, "\t");
        }
     }
---------------------------------------------------------------------------

ご確認いただけると有難いです。

--
  株式会社ドリーム・アーツ 製品企画開発本部
    竹迫 良範  <takesako@xxxxxxxxxx>