Junichiro Kita
kita****@kitaj*****
2004年 1月 15日 (木) 01:37:04 JST
きたです. # ちょっと寝惚けているので,もしかしたら思い込みで書いちゃってるかもし # れません.その際はご指摘お願いします. https://sourceforge.jp/tracker/?func=detail&atid=1529&aid=3729&group_id=388 の件を調べていて発見したんですが,kz-profile.c の kz_profile_delete_* がおかしくありませんか? KzProfile の list の先頭の要素が削除されるような操作をすると,list が 無効なポインタになってしまうような気がします. プロキシの設定では,設定変更後に適用や OK を押すと,いったん kz_proxy (こいつの型は KzProfile)の list を全部削除した後,tree_model から順にプロキシの設定情報を取り出して登録していきます. # このロジックはこのロジックでダサいですが… 全部削除するということは,先頭の要素も削除されるということです. 実際に全部削除した直後に kz_proxy->list を確認してみると,NULL ではな く意味のない整数値(無効な値)になっていました. このため,その直後の kz_proxy への登録時に kz_proxy->list->next の値に よって SEGV したり無限に next をたどり続けたりするんではないかと思いま す. バータリーに修正するなら添付のパッチのように,kz_profile_list_free の 中で先頭チェックをきちんとやってやれば良いと思いますが,これ,いっその こと KzProfileList を GList で置き換えちゃった方がよくありませんかね? 自前で双方向リストを実装してるのって何か意図があるんでしょうか? -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: kz-profile.c.diff 型: application/octet-stream サイズ: 1727 バイト 説明: 無し Descargar