From: NAGAI Hidetoshi Date: 1998-04-26T06:38:44+09:00 Subject: [ruby-list:7726] Re: How to install beta versions 永井@知能.九工大です. さらに追跡してみました. >>>>> "N" == NAGAI Hidetoshi writes: N> 他に,test2.rb が del ボタンの後の add ボタン press で N> ---------------------------------------------------------- N> test2.rb:48:in `sprintf': failed to convert Gtk::ListItem into Integer (TypeError) N> ---------------------------------------------------------- N> となることと, こちらは極めて単純な問題で, add と remove で同じ i というローカル変数を違う目的で使ってます. remove で使ってしまっているのが間違いですね. remove ボタンのシグナル処理の中の for i in tmp_list ... の i を l などの他の変数に変更すれば問題なしです. N> test9.rb がボタンを押したとたんに N> ---------------------------------------------------------- N> test9.rb:95: [BUG] Segmentation fault N> IOT trap/Abort (core dumped) N> ---------------------------------------------------------- N> となることとを確認していますが,これはまだ調べてません. こちらは gtk.c の中の gobj_smethod_added にバグがありました. 1155 行目で ---------------------------------------------------------------- VALUE data = assoc_new(Qnil, id); ---------------------------------------------------------------- として,この data を gtk_signal_connect_interp に渡してますが, gtk_signal_connect_interp の中で data の第 3 要素を参照するために segmentation fault になっていました. そこでこの行を ---------------------------------------------------------------- VALUE data = ary_new3(3, Qnil, id, ary_new3(2,self,id)); ---------------------------------------------------------------- としてみました. これで test9 も落ちなくなります. ただし,gobj_smethod_added で,何を要素として引き渡すべきかが 良くわからなかったので,gobj_smethod_added が受け取ったものを そのまま渡しちまえ(^_^;てなことをしています. 結果,test9 の def button.clicked(*args) の args には [<#Gtk::Button: id=0x80de100>, 8601] などというものが渡ります. ( 8601.id2name は "clicked" です.) というわけで,正式なのをよろしくおねがいします.> まつもとさん -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp