diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-02 15:29:11 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-02 15:29:11 +0000 |
commit | 41a1a4ed7633e02965dc1de593d16b7e1635c129 (patch) | |
tree | 90cd09e48610da8b34f55dcded9ca024a21b629f | |
parent | 924836c08054f61776bb4ef9c9b3b5d4986c26d5 (diff) | |
download | ruby-41a1a4ed7633e02965dc1de593d16b7e1635c129.tar.gz |
* marshal.c (w_object): add a check for modification of array during
its dump.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | marshal.c | 11 | ||||
-rw-r--r-- | version.h | 6 |
3 files changed, 14 insertions, 8 deletions
@@ -1,3 +1,8 @@ +Tue Jun 3 00:26:48 2008 Yusuke Endoh <mame@tsg.ne.jp> + + * marshal.c (w_object): add a check for modification of array during + its dump. + Mon Jun 2 22:27:57 2008 Yusuke Endoh <mame@tsg.ne.jp> * enc/iso_8859_5.c: Large omicron should lowercase to small omicron. @@ -703,13 +703,14 @@ w_object(VALUE obj, struct dump_arg *arg, int limit) w_uclass(obj, rb_cArray, arg); w_byte(TYPE_ARRAY, arg); { - long len = RARRAY_LEN(obj); - VALUE *ptr = RARRAY_PTR(obj); + long i, len = RARRAY_LEN(obj); w_long(len, arg); - while (len--) { - w_object(*ptr, arg, limit); - ptr++; + for (i=0; i<RARRAY_LEN(obj); i++) { + w_object(RARRAY_PTR(obj)[i], arg, limit); + if (len != RARRAY_LEN(obj)) { + rb_raise(rb_eRuntimeError, "array modified during dump"); + } } } break; @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2008-06-02" +#define RUBY_RELEASE_DATE "2008-06-03" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20080602 +#define RUBY_RELEASE_CODE 20080603 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2008 #define RUBY_RELEASE_MONTH 6 -#define RUBY_RELEASE_DAY 2 +#define RUBY_RELEASE_DAY 3 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; |