From: Nikolai Weibull Date: 2012-01-09T22:02:56+09:00 Subject: [ruby-core:42002] Re: [ruby-trunk - Bug #5865] Exception#== should return false if the classes differ --f46d0417061f52ed8004b61804ee Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Mon, Jan 9, 2012 at 12:43, Yukihiro Matsumoto wrote= : > In message "Re: [ruby-core:41997] [ruby-trunk - Bug #5865] Exception#=3D= =3D should return false if the classes differ" > =C2=A0 =C2=A0on Mon, 9 Jan 2012 15:10:16 +0900, Hiro Asari writes: > | > |Issue #5865 has been updated by Hiro Asari. > | > |Can this be assigned to matz for clarification? > > See [ruby-dev:34808]. What=E2=80=99s the use case? (How often do you wrap an Exception in a Simp= leDelegator?) The fix should be to also check the #class of obj against the #class of exc, not to simply ignore it if the rb_obj_class()es don=E2=80=99t match= . I=E2=80=99ve attached a patch. SimpleDelegator would then need to delegate class as well, but I can=E2=80= =99t say whether that makes sense or not. --f46d0417061f52ed8004b61804ee Content-Type: application/octet-stream; name="exc_equal.patch" Content-Disposition: attachment; filename="exc_equal.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gx7i2rxz0 ZGlmZiAtLWdpdCBhL2Vycm9yLmMgYi9lcnJvci5jCmluZGV4IDY4NDRmOTkuLjVlNGVjZDQgMTAw NjQ0Ci0tLSBhL2Vycm9yLmMKKysrIGIvZXJyb3IuYwpAQCAtNzMyLDEwICs3MzIsMTYgQEAgZXhj X2VxdWFsKFZBTFVFIGV4YywgVkFMVUUgb2JqKQogICAgIENPTlNUX0lEKGlkX21lc2csICJtZXNn Iik7CiAKICAgICBpZiAocmJfb2JqX2NsYXNzKGV4YykgIT0gcmJfb2JqX2NsYXNzKG9iaikpIHsK LQlJRCBpZF9tZXNzYWdlLCBpZF9iYWNrdHJhY2U7CisgICAgICAgIFZBTFVFIGtsYXNzOworCUlE IGlkX2NsYXNzLCBpZF9tZXNzYWdlLCBpZF9iYWNrdHJhY2U7CisgICAgICAgIENPTlNUX0lEKGlk X2NsYXNzLCAiY2xhc3MiKTsKIAlDT05TVF9JRChpZF9tZXNzYWdlLCAibWVzc2FnZSIpOwogCUNP TlNUX0lEKGlkX2JhY2t0cmFjZSwgImJhY2t0cmFjZSIpOwogCisgICAgICAgIGtsYXNzID0gcmJf Y2hlY2tfZnVuY2FsbChvYmosIGlkX2NsYXNzLCAwLCAwKTsKKyAgICAgICAgaWYgKGtsYXNzID09 IFF1bmRlZikgcmV0dXJuIFFmYWxzZTsKKyAgICAgICAgaWYgKCFyYl9lcXVhbChyYl9vYmpfY2xh c3MoZXhjKSwga2xhc3MpKQorICAgICAgICAgICAgcmV0dXJuIFFmYWxzZTsKIAltZXNnID0gcmJf Y2hlY2tfZnVuY2FsbChvYmosIGlkX21lc3NhZ2UsIDAsIDApOwogCWlmIChtZXNnID09IFF1bmRl ZikgcmV0dXJuIFFmYWxzZTsKIAliYWNrdHJhY2UgPSByYl9jaGVja19mdW5jYWxsKG9iaiwgaWRf YmFja3RyYWNlLCAwLCAwKTsKZGlmZiAtLWdpdCBhL2xpYi9kZWxlZ2F0ZS5yYiBiL2xpYi9kZWxl Z2F0ZS5yYgppbmRleCA4NjNjNjNmLi5hMGY4NDU5IDEwMDY0NAotLS0gYS9saWIvZGVsZWdhdGUu cmIKKysrIGIvbGliL2RlbGVnYXRlLnJiCkBAIC04OCw2ICs4OCwxMCBAQCBjbGFzcyBEZWxlZ2F0 b3IgPCBCYXNpY09iamVjdAogICAgIHIKICAgZW5kCiAKKyAgZGVmIGNsYXNzCisgICAgX19nZXRv YmpfXy5jbGFzcworICBlbmQKKwogICAjCiAgICMgUmV0dXJucyB0aGUgbWV0aG9kcyBhdmFpbGFi bGUgdG8gdGhpcyBkZWxlZ2F0ZSBvYmplY3QgYXMgdGhlIHVuaW9uCiAgICMgb2YgdGhpcyBvYmpl Y3QncyBhbmQgXF9cX2dldG9ialxfXF8gbWV0aG9kcy4K --f46d0417061f52ed8004b61804ee--