YamaKen
yamak****@bp*****
2004年 1月 7日 (水) 09:35:53 JST
ヤマケンです。 anthy_quit()時のクリーンアップ漏れを一部修正しました。差分を添付 します。anthy-4700からの差分になっていますが、anthy-4901にもその まま当てて問題ないと思います。 Anthy及びuimではプロセス終了に伴うメモリ破棄に期待してクリーンアッ プを省略している個所がいくつかありますが、Qtopia環境では問題にな るので説明しておきます。 Qtopia環境でのIMはQ Window Systemのサーバプロセスに対してプラグ インとして何度もload/unloadを繰り返します。このため、プロセス終 了時の破棄に頼らずに全てのメモリを自力で解放する必要があります。 また、細部まで追っていないのですがunload→loadが実行された時に bssセクションがゼロクリアされずに残るようです。これが原因で IMKit-AnthyとIMKit-uim-anthyでIMリロード時にSEGVが発生していまし た(添付のパッチで一応解決しました)。 Anthy, uim共に上記のクリーンアップ漏れが残っているようなので、も し該当個所周辺のコードをいじる事があったらついでに直してもらえる と嬉しいです。私もIMKit 0.4.0をリリースしたら一通り確認するつも りです。 #IMKit-uimは概ね問題なく動いています。あとちょっとです。 ------------------------------- ヤマケン yamak****@bp***** -------------- next part -------------- diff -urN -x *~ anthy-4700.orig/src-diclib/conf.c anthy-4700/src-diclib/conf.c --- anthy-4700.orig/src-diclib/conf.c Tue Jul 8 00:37:02 2003 +++ anthy-4700/src-diclib/conf.c Wed Jan 7 07:09:02 2004 @@ -124,11 +124,10 @@ void anthy_do_conf_init(void) { - const char *fn; - val_ent_ator = anthy_create_allocator(sizeof(struct val_ent), val_ent_dtor); - if (!confIsInit) { + const char *fn; struct passwd *pw; + val_ent_ator = anthy_create_allocator(sizeof(struct val_ent), val_ent_dtor); /*デフォルトの値を設定する。*/ add_val("VERSION", VERSION); fn = anthy_conf_get_str("CONFFILE"); @@ -153,6 +152,8 @@ next = e->next; free(e); } + ent_list = NULL; + confIsInit = 0; } const char * diff -urN -x *~ anthy-4700.orig/src-splitter/depgraph.c anthy-4700/src-splitter/depgraph.c --- anthy-4700.orig/src-splitter/depgraph.c Thu Oct 16 23:03:58 2003 +++ anthy-4700/src-splitter/depgraph.c Wed Jan 7 07:46:29 2004 @@ -381,4 +381,5 @@ } free(gNodes); gNodes = 0; + nrNodes = 0; }