ruby-changes:10677
From: usa <ko1@a...>
Date: Wed, 11 Feb 2009 18:14:27 +0900 (JST)
Subject: [ruby-changes:10677] Ruby:r22240 (trunk): * gc.c (define_final, undefine_final): shouldn't add/remove finalizer
usa 2009-02-11 18:11:48 +0900 (Wed, 11 Feb 2009) New Revision: 22240 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22240 Log: * gc.c (define_final, undefine_final): shouldn't add/remove finalizer of forzen objects. * gc.c (undefine_final): should remove FL_FINALIZE flag. [ruby-dev:37964] (also see [ruby-dev:37959]) Modified files: trunk/ChangeLog trunk/gc.c Index: ChangeLog =================================================================== --- ChangeLog (revision 22239) +++ ChangeLog (revision 22240) @@ -1,3 +1,11 @@ +Wed Feb 11 18:09:41 2009 NAKAMURA Usaku <usa@r...> + + * gc.c (define_final, undefine_final): shouldn't add/remove finalizer + of forzen objects. + + * gc.c (undefine_final): should remove FL_FINALIZE flag. + [ruby-dev:37964] (also see [ruby-dev:37959]) + Wed Feb 11 17:37:41 2009 Tanaka Akira <akr@f...> * ext/socket/lib/socket.rb (Socket.udp_server_sockets): call the block Index: gc.c =================================================================== --- gc.c (revision 22239) +++ gc.c (revision 22240) @@ -2261,9 +2261,11 @@ undefine_final(VALUE os, VALUE obj) { rb_objspace_t *objspace = &rb_objspace; + if (OBJ_FROZEN(obj)) rb_error_frozen("object"); if (finalizer_table) { st_delete(finalizer_table, (st_data_t*)&obj, 0); } + FL_UNSET(obj, FL_FINALIZE); return obj; } @@ -2283,6 +2285,7 @@ VALUE obj, block, table; rb_scan_args(argc, argv, "11", &obj, &block); + if (OBJ_FROZEN(obj)) rb_error_frozen("object"); if (argc == 1) { block = rb_block_proc(); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/