[前][次][番号順一覧][スレッド一覧]

ruby-changes:1920

From: ko1@a...
Date: 8 Sep 2007 10:23:12 +0900
Subject: [ruby-changes:1920] matz - Ruby:r13411 (ruby_1_8): * struct.c (rb_struct_s_members): should raise TypeError instead

matz	2007-09-08 10:22:58 +0900 (Sat, 08 Sep 2007)

  New Revision: 13411

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/marshal.c
    branches/ruby_1_8/struct.c
    branches/ruby_1_8/version.h

  Log:
    * struct.c (rb_struct_s_members): should raise TypeError instead
      of call rb_bug().  [ruby-dev:31709]
    
    * marshal.c (r_object0): no nil check require any more.

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=13411&r2=13410
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/struct.c?r1=13411&r2=13410
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/version.h?r1=13411&r2=13410
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/marshal.c?r1=13411&r2=13410

Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 13410)
+++ ruby_1_8/ChangeLog	(revision 13411)
@@ -1,3 +1,10 @@
+Sat Sep  8 10:22:20 2007  Yukihiro Matsumoto  <matz@r...>
+
+	* struct.c (rb_struct_s_members): should raise TypeError instead
+	  of call rb_bug().  [ruby-dev:31709]
+
+	* marshal.c (r_object0): no nil check require any more.
+
 Sat Sep  8 09:38:19 2007  Tadayoshi Funaba  <tadf@d...>
 
 	* lib/date/format.rb (str[fp]time): now check specifications more
Index: ruby_1_8/version.h
===================================================================
--- ruby_1_8/version.h	(revision 13410)
+++ ruby_1_8/version.h	(revision 13411)
@@ -1,7 +1,7 @@
 #define RUBY_VERSION "1.8.6"
-#define RUBY_RELEASE_DATE "2007-09-05"
+#define RUBY_RELEASE_DATE "2007-09-08"
 #define RUBY_VERSION_CODE 186
-#define RUBY_RELEASE_CODE 20070905
+#define RUBY_RELEASE_CODE 20070908
 #define RUBY_PATCHLEVEL 5000
 
 #define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
 #define RUBY_VERSION_TEENY 6
 #define RUBY_RELEASE_YEAR 2007
 #define RUBY_RELEASE_MONTH 9
-#define RUBY_RELEASE_DAY 5
+#define RUBY_RELEASE_DAY 8
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];
Index: ruby_1_8/marshal.c
===================================================================
--- ruby_1_8/marshal.c	(revision 13410)
+++ ruby_1_8/marshal.c	(revision 13411)
@@ -1199,9 +1199,6 @@
 
 	    klass = path2class(r_unique(arg));
 	    mem = rb_struct_s_members(klass);
-	    if (mem == Qnil) {
-		rb_raise(rb_eTypeError, "uninitialized struct");
-	    }
 	    len = r_long(arg);
 
 	    values = rb_ary_new2(len);
Index: ruby_1_8/struct.c
===================================================================
--- ruby_1_8/struct.c	(revision 13410)
+++ ruby_1_8/struct.c	(revision 13411)
@@ -41,8 +41,11 @@
     VALUE members = rb_struct_iv_get(klass, "__members__");
 
     if (NIL_P(members)) {
-	rb_bug("non-initialized struct");
+	rb_raise(rb_eTypeError, "uninitialized struct");
     }
+    if (TYPE(members) != T_ARRAY) {
+	rb_raise(rb_eTypeError, "corrupted struct");
+    }
     return members;
 }
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]