diff options
-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; |