зеркало из https://github.com/github/ruby.git
* gc.c (rb_gc_call_finalizer_at_exit): deal with typed struct like
as obj_free(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
ac3c2866c7
Коммит
649237de8f
|
@ -1,10 +1,11 @@
|
|||
Tue Jul 7 16:54:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Tue Jul 7 17:00:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* gc.c (rb_gc_call_finalizer_at_exit): deal with typed struct like
|
||||
as obj_free().
|
||||
|
||||
* error.c (rb_typed_struct_is_kind_of): new function to see if the
|
||||
given typed struct.
|
||||
|
||||
Tue Jul 7 13:44:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* error.c (rb_check_typed_struct): new function to check typed
|
||||
struct.
|
||||
|
||||
|
|
3
gc.c
3
gc.c
|
@ -2802,6 +2802,9 @@ rb_gc_call_finalizer_at_exit(void)
|
|||
DATA_PTR(p) && RANY(p)->as.data.dfree &&
|
||||
RANY(p)->as.basic.klass != rb_cThread && RANY(p)->as.basic.klass != rb_cMutex) {
|
||||
p->as.free.flags = 0;
|
||||
if (RTYPEDDATA_P(p)) {
|
||||
RDATA(p)->dfree = RANY(p)->as.typeddata.type->dfree;
|
||||
}
|
||||
if ((long)RANY(p)->as.data.dfree == -1) {
|
||||
xfree(DATA_PTR(p));
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче