[Kakasi-dev 8] Re: Text-Kakasi 2.04 のインストール
Dan Kogai
dankogai @ dan.co.jp
2004年 7月 23日 (金) 21:28:26 JST
再び弾です。
On Jul 23, 2004, at 21:15, Dan Kogai wrote:
> #私自身、KakasiのC APIのExpertとは言いがたいのでコメント求む。特に kakasi_close_kanwadict()
> の呼び出しタイミングとか。
というわけでえ、Kakasi 2.3.4 の source を眺めてみました。kakasi_getopt_argv()に注目してみると....
lib/libkakasi.c
275: #ifndef LIBRARY
276: int
277: main(argc, argv)
278: int argc;
279: char **argv;
280: #else
281: int
282: kakasi_getopt_argv(argc, argv)
283: int argc;
284: char **argv;
285: #endif
286: {
/* .... */
484: #ifdef LIBRARY
485: free_jisyo();
486: #endif /* LIBRARY */
487: init_jisyo();
488: init_kanwa();
489: if (proc[7] != NULL) {
490: for (; argc > 0; -- argc)
491: add_jisyo(*(argv ++));
492: }
493:
494: #ifdef LIBRARY
495: return retval;
496: }
こんな風になっているのですが、これだと library 経由で kakasi_getopt_argv()
を繰り返し使うとき、辞書は解放されてもkanwaは何度もclose()されぬままopen()するはめになるように思えます。なぜか
free_kanwa() という関数はないのですが、例えば free_jisyo() の後に kakasi_close_kanwadict()
を呼ぶようにするとかした方がいいように思えます。
Dan the Man with Too Many File Descriptors to Close
Kakasi-dev メーリングリストの案内