[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 メーリングリストの案内