自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
July 26, 2005 [おもひで]
■ [Ruby-GNOME2] 64bit環境では動かない?
うーむ、そうかもしれないけど、正直、64bit環境持ってないのでよくわからないッス。
誰か、デバッグ環境用に64bitマシンくれないかなぁ、タダで。ついでにMacOS Xも。って、そんなムシのイイ話ないか...。
ってか、持ってる人がパッチ作って送ってくれるのが一番なんだけどなぁ。

あ,持ってますよ.
何を調べたらよいですか?
マジっすか!?GnomeCanvasがダメみたいなんです〜。
http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-talk/149401?149231-149760
私は今晩時間があったらMacOS Xの問題をもっと調べてみます。
ありがとう!
CanvasSamplePrimitives#setup_curvesでSEGVるやつはこれで直ると思います.
http://pub.cozmixng.org/~kou/diff/rb-gnomecanvas-boxed-copy.diff
原因は,GBoxedCopyFuncはコピーしたオブジェクトを返してほしいのに,gnome_canvas_path_def_refは何も返さないからでした.
ついでに,これが,Gnome::CanvasPathDef#initializeの引数チェックを厳しくしたやつです.
http://pub.cozmixng.org/~kou/diff/rb-gnomecanvas-improve-arg-check.diff
で,もう一つ問題があるんですが,これで落ちます.
require 'gtk2'
Gtk.init
w = Gtk::Window.new
w.flags = Gtk::Widget::CAN_FOCUS
w.show_all
Gtk.main
これで直ります.
http://pub.cozmixng.org/~kou/diff/rb-gtk-fix-declaration.diff
64bit環境ではVALUE(unsigned long)と(宣言省略時にデフォルトで使われる)intのサイズが異なるので,宣言を忘れていた時にこんな問題が起こります.ということで,宣言のし忘れには注意しなければいけません.
と,この間,私がはまった時に思いました. ;D
関係があるかどうか、というか、切り分けもまだしてないんですが(おまけに便乗ぎみで申し分けないのですが)、64ビット環境について http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=319063 というレポートをもらっています。
うー、お二方ともありがとうございます。助かります。
kouさん:
大変申し訳ないのですがayさんの方も見ていただくことは可能ですか?
あと、パッチはCVSに適用してくださいませ。
#リリース1週間遅らせようかしら...。
gnome_canvas_path_def_ref()の戻り値がg_object_ref()と違うのってメチャクチャいやらしいですね...。ひょっとしてlibgnomecanvas2のバグ?
ayさんの方ですが、これ、まさにkouさんのパッチで治りそうです。ちなみに、widget_unset_flagsの方も合ってないな...(^^;)。
ってか、なんで今まで大丈夫だったんだろう....> gnome_canvas_path_def_ref()
情報感謝です。Ruby-GNOME2のメンテナに連絡してみます。
コミットしました.
HEADのlibgnomecanvas2はgnome_canvas_path_def_get_type()を提供しているので,将来的にはそっちを使うようにした方がよいかもしれません.
ayさん:
debianのメンテナというとDafyddのことでしょうか。よろしくお願いします。
kouさん:
なるほど。まぁ、そちらの対応は次でも良いと思います。
コミットどうもです。