ruby-changes:5262
From: mame <ko1@a...>
Date: Tue, 3 Jun 2008 00:29:36 +0900 (JST)
Subject: [ruby-changes:5262] Ruby:r16761 (trunk): * marshal.c (w_object): add a check for modification of array during
mame 2008-06-03 00:29:11 +0900 (Tue, 03 Jun 2008) New Revision: 16761 Modified files: trunk/ChangeLog trunk/marshal.c trunk/version.h Log: * marshal.c (w_object): add a check for modification of array during its dump. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=16761&r2=16760&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16761&r2=16760&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/marshal.c?r1=16761&r2=16760&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 16760) +++ ChangeLog (revision 16761) @@ -1,3 +1,8 @@ +Tue Jun 3 00:26:48 2008 Yusuke Endoh <mame@t...> + + * marshal.c (w_object): add a check for modification of array during + its dump. + Mon Jun 2 22:27:57 2008 Yusuke Endoh <mame@t...> * enc/iso_8859_5.c: Large omicron should lowercase to small omicron. Index: version.h =================================================================== --- version.h (revision 16760) +++ version.h (revision 16761) @@ -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[]; Index: marshal.c =================================================================== --- marshal.c (revision 16760) +++ marshal.c (revision 16761) @@ -703,13 +703,14 @@ 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; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/