From: Nobuyoshi Nakada Date: 2011-12-27T21:22:52+09:00 Subject: [ruby-dev:45055] Re: [ruby-trunk - Bug #5786] LoadError: cannot load such file -- openssl なかだです。 (11/12/27 19:39), Hiroshi Nakamura wrote: > (2011/12/22 10:18), Nobuyoshi Nakada wrote: >> これは、1.9からautoloadされる定数がdefined?でnilになるというバグがあっ >> たので1.9.3で直したのですが、そのときに定数のdefined?で例外が起きないと >> いう(1.9.0で導入された誤った)仮定にそぐわなくなったためです。おそらく最 >> 右辺以外の定数参照にISEQ_TYPE_DEFINED_GUARDを付ける必要があるのではない >> かと思います。 > > いまひとつ中田さんが書かれていることを理解しきれていませんが、 > defined?(A::B) は、普通にAの定数参照をして、Aがautoloadだったらそれも解 > 決しちゃう、ということでいいですよね? そうなります。 > 1.9.3で、1.8と同じ挙動になった、と。 ただし、Aの解決時に例外が起きても無視しなくなっているという違いが残って います。具体的には、defined?(raise::A)が1.8まではnilになるのに対して、 1.9以降では例外になります。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦