summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--marshal.c3
-rw-r--r--struct.c5
-rw-r--r--version.h6
4 files changed, 14 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 5784389f04..379ba7a562 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sat Sep 8 10:22:20 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * 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@dotrb.org>
* lib/date/format.rb (str[fp]time): now check specifications more
diff --git a/marshal.c b/marshal.c
index 185ace6a72..a7aa7712e2 100644
--- a/marshal.c
+++ b/marshal.c
@@ -1199,9 +1199,6 @@ r_object0(arg, proc, ivp, extmod)
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);
diff --git a/struct.c b/struct.c
index 88357dedc9..aaa2a4bce7 100644
--- a/struct.c
+++ b/struct.c
@@ -41,7 +41,10 @@ rb_struct_s_members(klass)
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;
}
diff --git a/version.h b/version.h
index dc7dbf59ed..28498cadda 100644
--- a/version.h
+++ b/version.h
@@ -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[];