From: SASADA Koichi Date: 2013-02-09T17:14:13+09:00 Subject: [ruby-dev:46963] Re: [ruby-trunk - Bug #7774][Assigned] IFUNC上のbinding呼び出しでSEGV SEGV を直すときに,うっかり意図しない非互換が混入されてしまいました,と いう理屈で,これは 2_0_0 のほうにバックポートしてもいいでしょうか >mame さん Binding はどう取れるべきか,については実はそんなに自明ではないので,今度 誰か議論させて下さい.この辺,今は本当に「実装がそうだったから」以外じゃ ないような気がしています. (2013/02/09 16:45), Kazuki Tsujimoto wrote: > 辻本です > > Subject: [ruby-dev:46961] Re: [ruby-trunk - Bug #7774][Assigned] IFUNC上のbinding呼び出しでSEGV > From: SASADA Koichi > Date: Sat, 9 Feb 2013 13:12:59 +0900 > >>  とまぁ,こんな感じで,「呼び出し側のフレームを返す」という仕様ではな >> かったわけです. >> >>  もし,以前の挙動に戻すなら,ifuc の binding を作りつつ,ruby-level フ >> レームまで遡って,その ruby-level フレームの binding を返す,というのが >> 思いつきました.これで解決しそうではあります. > > 簡単に仕様をまとめるとこんな感じでしょうか。 > > 1.9.3/2.0.0rc1 > Rubyメソッド: 最後のruby-levelフレーム(呼び出し側フレームかどうかは無関係) > Cメソッド: 同上 > > 2.0.0rc2 > Rubyメソッド: 最後のruby-levelフレーム(呼び出し側フレームかどうかは無関係) > Cメソッド: 最後のruby-levelまたはC-levelフレーム(メソッドの実装による) > > 戻すにしても、タイミングが問題ですね。 > -- // SASADA Koichi at atdot dot net