ruby-changes:1673
From: ko1@a...
Date: 22 Aug 2007 09:56:26 +0900
Subject: [ruby-changes:1673] shyouhei - Ruby:r13164 (ruby_1_8_6): * struct.c (rb_struct_init_copy): disallow changing the size.
shyouhei 2007-08-22 09:56:18 +0900 (Wed, 22 Aug 2007)
New Revision: 13164
Modified files:
branches/ruby_1_8_6/ChangeLog
branches/ruby_1_8_6/struct.c
branches/ruby_1_8_6/version.h
Log:
* struct.c (rb_struct_init_copy): disallow changing the size.
[ruby-dev:31168]
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/ChangeLog?r1=13164&r2=13163
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/version.h?r1=13164&r2=13163
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/struct.c?r1=13164&r2=13163
Index: ruby_1_8_6/ChangeLog
===================================================================
--- ruby_1_8_6/ChangeLog (revision 13163)
+++ ruby_1_8_6/ChangeLog (revision 13164)
@@ -1,3 +1,8 @@
+Wed Aug 22 09:55:08 2007 Nobuyoshi Nakada <nobu@r...>
+
+ * struct.c (rb_struct_init_copy): disallow changing the size.
+ [ruby-dev:31168]
+
Wed Aug 22 09:54:28 2007 NAKAMURA, Hiroshi <nahi@r...>
* random.c: documentation fix. srand(0) initializes PRNG with '0',
Index: ruby_1_8_6/version.h
===================================================================
--- ruby_1_8_6/version.h (revision 13163)
+++ ruby_1_8_6/version.h (revision 13164)
@@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2007-08-22"
#define RUBY_VERSION_CODE 186
#define RUBY_RELEASE_CODE 20070822
-#define RUBY_PATCHLEVEL 56
+#define RUBY_PATCHLEVEL 57
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
Index: ruby_1_8_6/struct.c
===================================================================
--- ruby_1_8_6/struct.c (revision 13163)
+++ ruby_1_8_6/struct.c (revision 13164)
@@ -252,7 +252,7 @@
ary = rb_ary_new();
va_init_list(ar, name);
- while (mem = va_arg(ar, char*)) {
+ while ((mem = va_arg(ar, char*)) != 0) {
ID slot = rb_intern(mem);
rb_ary_push(ary, ID2SYM(slot));
}
@@ -557,8 +557,9 @@
if (!rb_obj_is_instance_of(s, rb_obj_class(copy))) {
rb_raise(rb_eTypeError, "wrong argument class");
}
- RSTRUCT(copy)->ptr = ALLOC_N(VALUE, RSTRUCT(s)->len);
- RSTRUCT(copy)->len = RSTRUCT(s)->len;
+ if (RSTRUCT(copy)->len != RSTRUCT(s)->len) {
+ rb_raise(rb_eTypeError, "struct size mismatch");
+ }
MEMCPY(RSTRUCT(copy)->ptr, RSTRUCT(s)->ptr, VALUE, RSTRUCT(copy)->len);
return copy;
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml