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

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/

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