From: Masao M. <mu...@hi...> - 2004-02-16 16:43:53
|
さかいさん むとうです。 devel-enでレポートされたKernel#y問題ですが、 要は、プロパティアクセッサを自動で定義する際に、 すでにインスタンスメソッドが登録されていると上書き しないようになってる現状の仕様に原因があります。 で、以下のようなパッチをあてようかと思います。 これって何か問題ありますか? もうちょっとオーバーライドしちゃう範囲を 制限した方が良いのかなぁ、とか、 逆にいっそのこと、全部上書きしちゃえば良いじゃん とか思ったのですがどうにも。 Index: rbgobject.c =================================================================== RCS file: /cvsroot/ruby-gnome2/ruby-gnome2/glib/src/rbgobject.c,v retrieving revision 1.33 diff -u -r1.33 rbgobject.c --- rbgobject.c 25 Aug 2003 01:50:30 -0000 1.33 +++ rbgobject.c 16 Feb 2004 16:26:43 -0000 @@ -478,7 +478,7 @@ prop_exclude_list = rb_funcall(rb_cObject, rb_intern("instance_methods"), - 1, Qtrue); + 1, Qfalse); rb_global_variable(&prop_exclude_list); RUBY_GOBJECT_OBJ_KEY = g_quark_from_static_string("__ruby_gobject_object__"); -- .:% Masao Mutoh<mu...@hi...> |
From: Masahiro S. ()
<sa...@to...> - 2004-02-17 15:30:37
|
さかいです。 From: Masao Mutoh <mu...@hi...> Subject: [ruby-gnome2-devel-ja] Kernel#y対応 Date: Tue, 17 Feb 2004 01:40:01 +0900 > むとうです。 > > devel-enでレポートされたKernel#y問題ですが、 > 要は、プロパティアクセッサを自動で定義する際に、 > すでにインスタンスメソッドが登録されていると上書き > しないようになってる現状の仕様に原因があります。 > > で、以下のようなパッチをあてようかと思います。 > > これって何か問題ありますか? Object.instance_methods(false) #=> [] なので、これだと制限になってないんじゃないでしょうか。 > もうちょっとオーバーライドしちゃう範囲を > 制限した方が良いのかなぁ、とか、 > 逆にいっそのこと、全部上書きしちゃえば良いじゃん > とか思ったのですがどうにも。 さすがにobject_idメソッドみたいなメソッドを上書きされてしまうと 混乱するでしょうし、何らかの制限は必要でしょう。 で、制限する範囲ですが、どうせヒューリスティックなんだから、 実行時に調べてロードする順番に依存してしまうよりも、 単にハードコードしてしまってた方が良いような気がしてきました。 -- 酒井 政裕 / Masahiro Sakai |
From: Masao M. <mu...@hi...> - 2004-02-17 18:57:44
|
むとうです。 On Wed, 18 Feb 2004 00:27:21 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > > > > これって何か問題ありますか? > > Object.instance_methods(false) #=> [] > なので、これだと制限になってないんじゃないでしょうか。 あり、ホントだ<アホ。 > > もうちょっとオーバーライドしちゃう範囲を > > 制限した方が良いのかなぁ、とか、 > > 逆にいっそのこと、全部上書きしちゃえば良いじゃん > > とか思ったのですがどうにも。 > > さすがにobject_idメソッドみたいなメソッドを上書きされてしまうと > 混乱するでしょうし、何らかの制限は必要でしょう。 > > で、制限する範囲ですが、どうせヒューリスティックなんだから、 > 実行時に調べてロードする順番に依存してしまうよりも、 > 単にハードコードしてしまってた方が良いような気がしてきました。 確かに。 モノはついでということで(?)、実装の方、お願いできませんでしょうか。 #お忙しいかな? ではでは。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2004-02-22 13:57:10
|
むとうです。 On Wed, 18 Feb 2004 03:53:14 +0900 Masao Mutoh <mu...@hi...> wrote: > > Object.instance_methods(false) #=> [] > > なので、これだと制限になってないんじゃないでしょうか。 > > あり、ホントだ<アホ。 > > > > もうちょっとオーバーライドしちゃう範囲を > > > 制限した方が良いのかなぁ、とか、 > > > 逆にいっそのこと、全部上書きしちゃえば良いじゃん > > > とか思ったのですがどうにも。 > > > > さすがにobject_idメソッドみたいなメソッドを上書きされてしまうと > > 混乱するでしょうし、何らかの制限は必要でしょう。 > > > > で、制限する範囲ですが、どうせヒューリスティックなんだから、 > > 実行時に調べてロードする順番に依存してしまうよりも、 > > 単にハードコードしてしまってた方が良いような気がしてきました。 > > 確かに。 > モノはついでということで(?)、実装の方、お願いできませんでしょうか。 > #お忙しいかな? 私の方で実装してみました。よかったらチェックしてみてください。 一応、オーバーライドしないプロパティは class, clone, dup, extend, freeze, hash, id, method, methods, object_id, send, taint, untaint にしてみました。なんとなくオーバーライドされたくなさそうだなぁ、 というところで選んでみましたがあまり根拠はないです。 あと、上記以外にもオーバーライドされたらまずいだろうなぁなんてのが いくつかありますが(__id__とか)、それらは、プロパティとして登録される ことは無いんじゃないかなぁと思って入れてありません。 それでは。 -- .:% Masao Mutoh<mu...@hi...> |
From: Kazuhiro N. <zn...@mb...> - 2004-02-23 15:44:01
|
西山和広です。 In <200...@hi...> On Sun, 22 Feb 2004 22:49:44 +0900 Masao Mutoh <mu...@hi...> wrote: > 一応、オーバーライドしないプロパティは > > class, clone, dup, extend, freeze, hash, id, method, methods, > object_id, send, taint, untaint > > にしてみました。なんとなくオーバーライドされたくなさそうだなぁ、 > というところで選んでみましたがあまり根拠はないです。 idとsendはオーバーライドしてもかまわない気がします。 そのための__id__(とobject_id)と__send__ですし。 -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA) |
From: Masao M. <mu...@hi...> - 2004-02-24 11:55:26
|
むとうです。 On Tue, 24 Feb 2004 00:35:59 +0900 Kazuhiro NISHIYAMA <zn...@mb...> wrote: > 西山和広です。 > > In <200...@hi...> > On Sun, 22 Feb 2004 22:49:44 +0900 > Masao Mutoh <mu...@hi...> wrote: > > 一応、オーバーライドしないプロパティは > > > > class, clone, dup, extend, freeze, hash, id, method, methods, > > object_id, send, taint, untaint > > > > にしてみました。なんとなくオーバーライドされたくなさそうだなぁ、 > > というところで選んでみましたがあまり根拠はないです。 > > idとsendはオーバーライドしてもかまわない気がします。 > そのための__id__(とobject_id)と__send__ですし。 なるほど、そうですね。外します。 -- .:% Masao Mutoh<mu...@hi...> |