Namazu-devel-ja(旧)


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

Re: missing cache in 'nmz/field.c - nmz_get_field_data()'



<200210030221.LAA00753@xxxxxxxxxxxxxxx>の記事において
yiwakiri@xxxxxxxxxxxxさんは書きました。

>> nmz_free_internal()にcacheのクリアを実装した方が良くないでしょうか?

  そうですね。いただいたパッチのままで問題なさそうです。

>> クイックハックなので、マルチスレッドサーバでの
>> libnamazu.soの利用は考慮していません。

  もともと libnmz 自体 reentrant ではないですし、このパッチで良いとお
もいます。

# この場合 LTVERSION は 6:0:3 から 7:0:4 にすればいいのかな?

  ついでに同様の問題を抱えた関数がないか探してみたのですが、i18n.c の
nmz_let_lang が今のままだと呼び出す毎に malloc してしまう問題がありそ
うです。なのでパッチを書いてみました。

  それ以外は多分大丈夫だと思います。
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx
	knok@xxxxxxxxxx / knok@xxxxxxxxxx

Index: i18n.c
===================================================================
RCS file: /storage/cvsroot/namazu/nmz/i18n.c,v
retrieving revision 1.26.4.4
diff -u -r1.26.4.4 i18n.c
--- i18n.c      21 Dec 2001 05:36:40 -0000      1.26.4.4
+++ i18n.c      7 Oct 2002 06:31:30 -0000
@@ -121,8 +121,10 @@
 #else
 # ifdef HAVE_PUTENV
        {
-           static char *store;
+           static char *store = NULL;

+           if (store != NULL)
+               free(store);
            store = (char *)malloc(strlen(lang) + 6); /* do *not* free */
            if (store == NULL)
                return NULL; /* FIXME: should be fatal error */