Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: OpenBSD用のpatc h
寺西です。
Yukio USUDA wrote:
>
> OpenBSD3.4で試したときの結果を送っていませんでした。
>
> Bochs環境で試しています。
> 自分でインストールせずにBochsのサイトにあった
> インストール済みディスクイメージを使っています。
> kakasi,nkfは入れていません。
>
> mknmz-9がFAILになるのはBochs環境で実行しているため
> 時間がかかりすぎているせいだと思います。
>
> パッチ適用後で idxdiff-2がFAILになっているのは
> make checkの最中に日付が変わったためと思われます。
NetBSD を入れた HDD に OpenBSD を入れてためしてみました。
また、野首さんのパッチを見ながら何がまずいのか調べたところ、
次のパッチで make check が ALL PASS するようになりました。
どうやら、
NmzResult func(xxxx, NmzResult val)
{
return val;
}
という形の関数の場合、正しい値を返さないようです。
これを
NmzResult func(xxxx, NmzResult src)
{
NmzResult val = src;
return val;
}
と書き換えることで、期待した値を返すようになりました。
もちろん OpenBSD がこのような処理にバグがあるわけでは(おそらく)
ありません。(非常に単純なプログラムの場合には、期待した値を
返しています。)
たぶん、Namazu のどこかの処理でスタックやメモリを壊している
バグがあって、OpenBSD の場合このような症状として表面化したの
でしょう。(これも alloca の問題かもしれません。)
根本的な解決にはなっていませんが、下記パッチをあてること自体は
他に悪影響を及ぼすものではありませんので、あてることにします。
これをあてて 2.0.13RC3 をリリースすることにします。
なお、NmzResult func(xxxx, NmzResult src) という形式の関数は、
他にもあるので、念のためもう少し修正するかもしれません。
(make check で全てのテストができているわけではないため)
# cvs diff search.c
Index: search.c
===================================================================
RCS file: /storage/cvsroot/namazu/nmz/search.c,v
retrieving revision 1.86.4.11
diff -u -p -r1.86.4.11 search.c
--- search.c 28 Mar 2004 00:38:22 -0000 1.86.4.11
+++ search.c 4 Apr 2004 14:04:57 -0000
@@ -399,12 +399,14 @@ open_phrase_index_files(FILE **phrase, F
* FIXME: this function is too long and difficult to understand. (but
works)
*/
static NmzResult
-do_phrase_search(const char *key, NmzResult val)
+do_phrase_search(const char *key, NmzResult src)
{
int i, h = 0;
char *p, tmpkey[BUFSIZE] = "", *words[QUERY_TOKEN_MAX + 1],
*prevword = NULL;
FILE *phrase, *phrase_index;
struct nmz_hitnumlist *pr_hitnum = NULL; /* phrase hitnum */
+ /* FIXME: very ad hoc.(for OpenBSD) */
+ NmzResult val = src;
strncpy(tmpkey, key, BUFSIZE - 1);
p = tmpkey;
@@ -1078,10 +1080,12 @@ nmz_search(const char *query)
NmzResult
-nmz_do_searching(const char *key, NmzResult val)
+nmz_do_searching(const char *key, NmzResult src)
{
enum nmz_searchmethod mode;
char tmpkey[BUFSIZE] = "";
+ /* FIXME: very ad hoc.(for OpenBSD) */
+ NmzResult val = src;
strncpy(tmpkey, key, BUFSIZE - 1);
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E