diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-10-05 06:30:42 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-10-05 06:30:42 +0000 |
commit | ef52ffdf61f7ed1042d8dae2f7c98385b6f7f990 (patch) | |
tree | a3f924924f2ecfb32a593b11368d276c0447e518 | |
parent | 809a9c5b6d1454e623e929afdf5a878bdb4023dc (diff) |
* marshal.c (w_unique): should not dump anonymous class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | array.c | 2 | ||||
-rw-r--r-- | marshal.c | 3 | ||||
-rw-r--r-- | re.c | 33 |
4 files changed, 23 insertions, 19 deletions
@@ -1,3 +1,7 @@ +Fri Oct 5 15:19:46 2001 Yukihiro Matsumoto <matz@ruby-lang.org> + + * marshal.c (w_unique): should not dump anonymous class. + Fri Oct 5 11:59:13 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp> * eval.c (proc_s_new): revived. @@ -76,7 +76,7 @@ rb_ary_s_alloc(klass) VALUE klass; { NEWOBJ(ary, struct RArray); - OBJSETUP(ary, rb_cArray, T_ARRAY); + OBJSETUP(ary, klass, T_ARRAY); ary->len = 0; ary->capa = 0; @@ -213,6 +213,9 @@ w_unique(s, arg) char *s; struct dump_arg *arg; { + if (s[0] == '#') { + rb_raise(rb_eArgError, "can't dump anonymous class %s", s); + } w_symbol(rb_intern(s), arg); } @@ -883,17 +883,28 @@ rb_reg_initialize(obj, s, len, options) } } +static VALUE +rb_reg_s_alloc(klass) + VALUE klass; +{ + NEWOBJ(re, struct RRegexp); + OBJSETUP(re, klass, T_REGEXP); + + re->ptr = 0; + re->len = 0; + re->str = 0; + + return (VALUE)re; +} + VALUE rb_reg_new(s, len, options) const char *s; long len; int options; { - - NEWOBJ(re, struct RRegexp); - OBJSETUP(re, rb_cRegexp, T_REGEXP); + VALUE re = rb_reg_s_alloc(rb_cRegexp); - re->ptr = 0; re->len = 0; re->str = 0; rb_reg_initialize(re, s, len, options); return (VALUE)re; } @@ -1042,20 +1053,6 @@ rb_reg_initialize_m(argc, argv, self) } static VALUE -rb_reg_s_alloc(klass) - VALUE klass; -{ - NEWOBJ(re, struct RRegexp); - OBJSETUP(re, klass, T_REGEXP); - - re->ptr = 0; - re->len = 0; - re->str = 0; - - return (VALUE)re; -} - -static VALUE rb_reg_s_quote(argc, argv) int argc; VALUE *argv; |