mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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]) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a2c779be35
commit
e3c5fbba91
2 changed files with 11 additions and 0 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
Wed Feb 11 18:09:41 2009 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
|
* 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@fsij.org>
|
Wed Feb 11 17:37:41 2009 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* ext/socket/lib/socket.rb (Socket.udp_server_sockets): call the block
|
* ext/socket/lib/socket.rb (Socket.udp_server_sockets): call the block
|
||||||
|
|
3
gc.c
3
gc.c
|
@ -2261,9 +2261,11 @@ static VALUE
|
||||||
undefine_final(VALUE os, VALUE obj)
|
undefine_final(VALUE os, VALUE obj)
|
||||||
{
|
{
|
||||||
rb_objspace_t *objspace = &rb_objspace;
|
rb_objspace_t *objspace = &rb_objspace;
|
||||||
|
if (OBJ_FROZEN(obj)) rb_error_frozen("object");
|
||||||
if (finalizer_table) {
|
if (finalizer_table) {
|
||||||
st_delete(finalizer_table, (st_data_t*)&obj, 0);
|
st_delete(finalizer_table, (st_data_t*)&obj, 0);
|
||||||
}
|
}
|
||||||
|
FL_UNSET(obj, FL_FINALIZE);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2283,6 +2285,7 @@ define_final(int argc, VALUE *argv, VALUE os)
|
||||||
VALUE obj, block, table;
|
VALUE obj, block, table;
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "11", &obj, &block);
|
rb_scan_args(argc, argv, "11", &obj, &block);
|
||||||
|
if (OBJ_FROZEN(obj)) rb_error_frozen("object");
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
block = rb_block_proc();
|
block = rb_block_proc();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue