ruby-changes:14799
From: nobu <ko1@a...>
Date: Sun, 14 Feb 2010 04:50:01 +0900 (JST)
Subject: [ruby-changes:14799] Ruby:r26661 (trunk): * marshal.c (r_object0): register regexp object before encoding
nobu 2010-02-14 04:45:35 +0900 (Sun, 14 Feb 2010) New Revision: 26661 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26661 Log: * marshal.c (r_object0): register regexp object before encoding name. [ruby-dev:40414] * re.c (rb_reg_alloc, rb_reg_init_str): split from rb_reg_new_str. Modified files: trunk/ChangeLog trunk/include/ruby/intern.h trunk/marshal.c trunk/re.c Index: include/ruby/intern.h =================================================================== --- include/ruby/intern.h (revision 26660) +++ include/ruby/intern.h (revision 26661) @@ -553,6 +553,8 @@ #define HAVE_RB_REG_NEW_STR 1 VALUE rb_reg_new_str(VALUE, int); VALUE rb_reg_new(const char *, long, int); +VALUE rb_reg_alloc(void); +VALUE rb_reg_init_str(VALUE re, VALUE s, int options); VALUE rb_reg_match(VALUE, VALUE); VALUE rb_reg_match2(VALUE); int rb_reg_options(VALUE); Index: ChangeLog =================================================================== --- ChangeLog (revision 26660) +++ ChangeLog (revision 26661) @@ -1,3 +1,10 @@ +Sun Feb 14 04:45:31 2010 Nobuyoshi Nakada <nobu@r...> + + * marshal.c (r_object0): register regexp object before encoding + name. [ruby-dev:40414] + + * re.c (rb_reg_alloc, rb_reg_init_str): split from rb_reg_new_str. + Sat Feb 13 17:07:20 2010 Yukihiro Matsumoto <matz@r...> * array.c (rb_ary_delete): RDoc update. a patch from Hugh Sasse. Index: re.c =================================================================== --- re.c (revision 26660) +++ re.c (revision 26661) @@ -2419,9 +2419,20 @@ } VALUE +rb_reg_alloc(void) +{ + return rb_reg_s_alloc(rb_cRegexp); +} + +VALUE rb_reg_new_str(VALUE s, int options) { - VALUE re = rb_reg_s_alloc(rb_cRegexp); + return rb_reg_init_str(rb_reg_alloc(), s, options); +} + +VALUE +rb_reg_init_str(VALUE re, VALUE s, int options) +{ onig_errmsg_buffer err = ""; if (rb_reg_initialize_str(re, s, options, err, NULL, 0) != 0) { @@ -2440,7 +2451,7 @@ VALUE rb_enc_reg_new(const char *s, long len, rb_encoding *enc, int options) { - VALUE re = rb_reg_s_alloc(rb_cRegexp); + VALUE re = rb_reg_alloc(); onig_errmsg_buffer err = ""; if (rb_reg_initialize(re, s, len, enc, options, err, NULL, 0) != 0) { @@ -2459,7 +2470,7 @@ VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline) { - VALUE re = rb_reg_s_alloc(rb_cRegexp); + VALUE re = rb_reg_alloc(); onig_errmsg_buffer err = ""; if (!str) str = rb_str_new(0,0); Index: marshal.c =================================================================== --- marshal.c (revision 26660) +++ marshal.c (revision 26661) @@ -1495,6 +1495,7 @@ int options = r_byte(arg); int has_encoding = FALSE; + v = r_entry(rb_reg_alloc(), arg); if (ivp) { r_ivar(str, &has_encoding, arg); *ivp = FALSE; @@ -1518,7 +1519,7 @@ } rb_str_set_len(str, dst - ptr); } - v = r_entry(rb_reg_new_str(str, options), arg); + v = r_entry(rb_reg_init_str(v, str, options), arg); v = r_leave(v, arg); } break; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/