ruby-changes:5068
From: matz <ko1@a...>
Date: Sat, 24 May 2008 09:43:39 +0900 (JST)
Subject: [ruby-changes:5068] Ruby:r16563 (ruby_1_8): * error.c (syserr_eqq): === should be able to handle delegated
matz 2008-05-24 09:25:36 +0900 (Sat, 24 May 2008)
New Revision: 16563
Modified files:
branches/ruby_1_8/ChangeLog
branches/ruby_1_8/error.c
branches/ruby_1_8/version.h
Log:
* error.c (syserr_eqq): === should be able to handle delegated
objects as well.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/error.c?r1=16563&r2=16562&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=16563&r2=16562&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/version.h?r1=16563&r2=16562&diff_format=u
Index: ruby_1_8/error.c
===================================================================
--- ruby_1_8/error.c (revision 16562)
+++ ruby_1_8/error.c (revision 16563)
@@ -952,18 +952,16 @@
VALUE self, exc;
{
VALUE num, e;
+ ID en = rb_intern("errno");
- if (!rb_obj_is_kind_of(exc, rb_eSystemCallError)) return Qfalse;
- if (self == rb_eSystemCallError) return Qtrue;
+ if (!rb_obj_is_kind_of(exc, rb_eSystemCallError)) {
+ if (!rb_respond_to(exc, en)) return Qfalse;
+ }
+ else if (self == rb_eSystemCallError) return Qtrue;
num = rb_attr_get(exc, rb_intern("errno"));
if (NIL_P(num)) {
- VALUE klass = CLASS_OF(exc);
-
- while (TYPE(klass) == T_ICLASS || FL_TEST(klass, FL_SINGLETON)) {
- klass = (VALUE)RCLASS(klass)->super;
- }
- num = rb_const_get(klass, rb_intern("Errno"));
+ num = rb_funcall(exc, en, 0, 0);
}
e = rb_const_get(self, rb_intern("Errno"));
if (FIXNUM_P(num) ? num == e : rb_equal(num, e))
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog (revision 16562)
+++ ruby_1_8/ChangeLog (revision 16563)
@@ -18,6 +18,11 @@
* ext/extmk.rb: load purelib.rb only when not cross compiling.
+Fri May 23 08:47:02 2008 Yukihiro Matsumoto <matz@r...>
+
+ * error.c (syserr_eqq): === should be able to handle delegated
+ objects as well.
+
Fri May 23 04:22:19 2008 Hidetoshi NAGAI <nagai@a...>
* ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: fix memory leak.
Index: ruby_1_8/version.h
===================================================================
--- ruby_1_8/version.h (revision 16562)
+++ ruby_1_8/version.h (revision 16563)
@@ -1,7 +1,7 @@
#define RUBY_VERSION "1.8.7"
-#define RUBY_RELEASE_DATE "2008-05-23"
+#define RUBY_RELEASE_DATE "2008-05-24"
#define RUBY_VERSION_CODE 187
-#define RUBY_RELEASE_CODE 20080523
+#define RUBY_RELEASE_CODE 20080524
#define RUBY_PATCHLEVEL 5000
#define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 7
#define RUBY_RELEASE_YEAR 2008
#define RUBY_RELEASE_MONTH 5
-#define RUBY_RELEASE_DAY 23
+#define RUBY_RELEASE_DAY 24
#ifdef RUBY_EXTERN
RUBY_EXTERN const char ruby_version[];
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/