From: Akinori MUSHA Date: 2008-08-04T16:37:08+09:00 Subject: [ruby-dev:35759] Re: $SAFE=4の場合のReadline::HISTORY.each --pgp-sign-Multipart_Mon_Aug__4_15:12:14_2008-1 Content-Type: text/plain; charset=ISO-2022-JP At Sat, 2 Aug 2008 00:50:00 +0900, Takao Kouji wrote: > knu さんが r16125 にて、 > Readline::HISTORY.each メソッドをブロックなしで呼び出したときに、 > Enumerable::Enumerator を返すように修正されたと認識しています。 > その修正で $SAFE が 4 の場合でも、 > each メソッドを呼び出すことができるようになりました。 > たぶん、$SAFE が 4 の場合は、 > each メソッドを呼び出した時点で例外 SecurityError が > 発生したほうがよいのではないかと思い、パッチを作成しました。 > knu さんに修正内容を確認いただき、 > 問題がないようであればコミットしたいと考えています。 > いかがでしょうか。  現在のところ、同様のメソッド(多数)に関して、引数チェックおよび $SAFE チェックを(Enumerator 生成の)前に行うかどうかは統一されて いません。  メソッド冒頭への RETURN_ENUMERATOR() の追加のみで済ませることで たまたま呼出時チェック(生成時は無チェック)になっているものが多い ですが、そこはもちろん個別のメソッドの事情で決めてよいでしょう。 特に、引数の数や型のチェックなどは生成時にするのが望ましい場合も 多いはずです。  ただ、 Enumerator 自体は状態を持つものではなく、 enumerate する ための補助装置に過ぎないので、挙動はイテレータ実行時に決定される のが原則だとは思っています。 -- Akinori MUSHA / http://akinori.org/ --pgp-sign-Multipart_Mon_Aug__4_15:12:14_2008-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEABECAAYFAkiWnb4ACgkQkgvvx5/Z4e7HsQCgmTFZ0f8oCNLzQvhKYkQg3imX XmoAoIoEL0a0BuWh1iu6fVodsKZQcI7B =XAUU -----END PGP SIGNATURE----- --pgp-sign-Multipart_Mon_Aug__4_15:12:14_2008-1--