ruby-changes:13480
From: nobu <ko1@a...>
Date: Wed, 7 Oct 2009 16:44:49 +0900 (JST)
Subject: [ruby-changes:13480] Ruby:r25256 (trunk): * marshal.c (mark_dump_arg, mark_load_arg): ignore already cleaned
nobu 2009-10-07 16:42:30 +0900 (Wed, 07 Oct 2009) New Revision: 25256 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25256 Log: * marshal.c (mark_dump_arg, mark_load_arg): ignore already cleaned data. [ruby-core:25969] * marshal.c (clear_dump_arg, clear_load_arg): clear freed fields. Modified files: trunk/ChangeLog trunk/marshal.c Index: ChangeLog =================================================================== --- ChangeLog (revision 25255) +++ ChangeLog (revision 25256) @@ -1,3 +1,10 @@ +Wed Oct 7 16:42:28 2009 Nobuyoshi Nakada <nobu@r...> + + * marshal.c (mark_dump_arg, mark_load_arg): ignore already cleaned + data. [ruby-core:25969] + + * marshal.c (clear_dump_arg, clear_load_arg): clear freed fields. + Wed Oct 7 16:06:30 2009 Nobuyoshi Nakada <nobu@r...> * include/ruby/ruby.h (rb_long2int): evalates the argument only Index: marshal.c =================================================================== --- marshal.c (revision 25255) +++ marshal.c (revision 25256) @@ -162,7 +162,7 @@ mark_dump_arg(void *ptr) { struct dump_arg *p = ptr; - if (!ptr) + if (!p->symbols) return; rb_mark_set(p->data); rb_mark_hash(p->compat_tbl); @@ -850,7 +850,9 @@ st_free_table(arg->symbols); arg->symbols = 0; st_free_table(arg->data); + arg->data = 0; st_free_table(arg->compat_tbl); + arg->compat_tbl = 0; if (arg->encodings) { st_free_table(arg->encodings); arg->encodings = 0; @@ -974,7 +976,7 @@ mark_load_arg(void *ptr) { struct load_arg *p = ptr; - if (!ptr) + if (!p->symbols) return; rb_mark_tbl(p->data); rb_mark_hash(p->compat_tbl); @@ -1714,7 +1716,9 @@ st_free_table(arg->symbols); arg->symbols = 0; st_free_table(arg->data); + arg->data = 0; st_free_table(arg->compat_tbl); + arg->compat_tbl = 0; } /* -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/