ruby-changes:8124
From: nobu <ko1@a...>
Date: Wed, 1 Oct 2008 18:58:05 +0900 (JST)
Subject: [ruby-changes:8124] Ruby:r19652 (ruby_1_8, trunk): * marshal.c (marshal_dump): initializes dump_arg before any funcall.
nobu 2008-10-01 18:57:38 +0900 (Wed, 01 Oct 2008) New Revision: 19652 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19652 Log: * marshal.c (marshal_dump): initializes dump_arg before any funcall. [ruby-dev:36648] Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/marshal.c branches/ruby_1_8/version.h trunk/ChangeLog trunk/marshal.c Index: ChangeLog =================================================================== --- ChangeLog (revision 19651) +++ ChangeLog (revision 19652) @@ -1,3 +1,8 @@ +Wed Oct 1 18:57:31 2008 Nobuyoshi Nakada <nobu@r...> + + * marshal.c (marshal_dump): initializes dump_arg before any funcall. + [ruby-dev:36648] + Wed Oct 1 00:54:32 2008 Yukihiro Matsumoto <matz@r...> * string.c (rb_str_split_m): should use rb_str_subseq() which use Index: marshal.c =================================================================== --- marshal.c (revision 19651) +++ marshal.c (revision 19652) @@ -865,29 +865,30 @@ else port = a1; } arg.dest = 0; + arg.symbols = st_init_numtable(); + arg.data = st_init_numtable(); + arg.taint = Qfalse; + arg.untrust = Qfalse; + arg.compat_tbl = st_init_numtable(); + arg.encodings = 0; + arg.str = rb_str_buf_new(0); + RBASIC(arg.str)->klass = 0; + arg.wrapper = Data_Wrap_Struct(rb_cData, mark_dump_arg, 0, &arg); if (!NIL_P(port)) { if (!rb_respond_to(port, s_write)) { type_error: rb_raise(rb_eTypeError, "instance of IO needed"); } - arg.str = rb_str_buf_new(0); arg.dest = port; if (rb_respond_to(port, s_binmode)) { rb_funcall2(port, s_binmode, 0, 0); + check_dump_arg(&arg, s_dump_data); } } else { - port = rb_str_buf_new(0); - arg.str = port; + port = arg.str; } - arg.symbols = st_init_numtable(); - arg.data = st_init_numtable(); - arg.taint = Qfalse; - arg.untrust = Qfalse; - arg.compat_tbl = st_init_numtable(); - arg.wrapper = Data_Wrap_Struct(rb_cData, mark_dump_arg, 0, &arg); - arg.encodings = 0; c_arg.obj = obj; c_arg.arg = &arg; c_arg.limit = limit; @@ -896,6 +897,7 @@ w_byte(MARSHAL_MINOR, &arg); rb_ensure(dump, (VALUE)&c_arg, dump_ensure, (VALUE)&arg); + RBASIC(arg.str)->klass = rb_cString; return port; } Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 19651) +++ ruby_1_8/ChangeLog (revision 19652) @@ -1,3 +1,8 @@ +Wed Oct 1 18:57:31 2008 Nobuyoshi Nakada <nobu@r...> + + * marshal.c (marshal_dump): initializes dump_arg before any funcall. + [ruby-dev:36648] + Sat Sep 27 04:28:41 2008 Nobuyoshi Nakada <nobu@r...> * file.c (rmext): preceding dots are not a part of extension. Index: ruby_1_8/version.h =================================================================== --- ruby_1_8/version.h (revision 19651) +++ ruby_1_8/version.h (revision 19652) @@ -1,15 +1,15 @@ #define RUBY_VERSION "1.8.7" -#define RUBY_RELEASE_DATE "2008-09-27" +#define RUBY_RELEASE_DATE "2008-10-01" #define RUBY_VERSION_CODE 187 -#define RUBY_RELEASE_CODE 20080927 +#define RUBY_RELEASE_CODE 20081001 #define RUBY_PATCHLEVEL 5000 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 #define RUBY_VERSION_TEENY 7 #define RUBY_RELEASE_YEAR 2008 -#define RUBY_RELEASE_MONTH 9 -#define RUBY_RELEASE_DAY 27 +#define RUBY_RELEASE_MONTH 10 +#define RUBY_RELEASE_DAY 1 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; Index: ruby_1_8/marshal.c =================================================================== --- ruby_1_8/marshal.c (revision 19651) +++ ruby_1_8/marshal.c (revision 19652) @@ -777,8 +777,12 @@ else port = a1; } arg.dest = 0; + arg.symbols = st_init_numtable(); + arg.data = st_init_numtable(); + arg.taint = Qfalse; arg.str = rb_str_buf_new(0); RBASIC(arg.str)->klass = 0; + arg.wrapper = Data_Wrap_Struct(rb_cData, mark_dump_arg, 0, &arg); if (!NIL_P(port)) { if (!rb_respond_to(port, s_write)) { type_error: @@ -794,10 +798,6 @@ port = arg.str; } - arg.symbols = st_init_numtable(); - arg.data = st_init_numtable(); - arg.taint = Qfalse; - arg.wrapper = Data_Wrap_Struct(rb_cData, mark_dump_arg, 0, &arg); c_arg.obj = obj; c_arg.arg = &arg; c_arg.limit = limit; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/