From 3edaf669ba25bcceebb8e4d6d3b2f9e338b35b94 Mon Sep 17 00:00:00 2001 From: ko1 Date: Sun, 8 Jun 2008 10:01:40 +0000 Subject: * array.c, bignum.c, cont.c, dir.c, dln.c, encoding.c, enumerator.c, enumerator.c (enumerator_allocate), eval_jump.c, file.c, hash.c, io.c, load.c, pack.c, proc.c, random.c, re.c, ruby.c, st.c, string.c, thread.c, thread_pthread.c, time.c, util.c, variable.c, vm.c, gc.c: allocated memory objects by xmalloc (ruby_xmalloc) should be freed by xfree (ruby_xfree). * ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c, ext/gdbm/gdbm.c, ext/json/ext/parser/parser.c, ext/json/ext/parser/unicode.c, ext/openssl/ossl_cipher.c, ext/openssl/ossl_hmac.c, ext/openssl/ossl_pkey_ec.c, ext/sdbm/init.c, ext/strscan/strscan.c, ext/zlib/zlib.c: ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- gc.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'gc.c') diff --git a/gc.c b/gc.c index 032f70714..3da18271e 100644 --- a/gc.c +++ b/gc.c @@ -475,6 +475,13 @@ rb_gc_disable(void) VALUE rb_mGC; +void +rb_register_mark_object(VALUE obj) +{ + VALUE ary = GET_THREAD()->vm->mark_object_ary; + rb_ary_push(ary, obj); +} + void rb_gc_register_address(VALUE *addr) { @@ -487,13 +494,6 @@ rb_gc_register_address(VALUE *addr) global_List = tmp; } -void -rb_register_mark_object(VALUE obj) -{ - VALUE ary = GET_THREAD()->vm->mark_object_ary; - rb_ary_push(ary, obj); -} - void rb_gc_unregister_address(VALUE *addr) { @@ -502,7 +502,7 @@ rb_gc_unregister_address(VALUE *addr) if (tmp->varptr == addr) { global_List = tmp->next; - RUBY_CRITICAL(free(tmp)); + xfree(tmp); return; } while (tmp->next) { @@ -510,7 +510,7 @@ rb_gc_unregister_address(VALUE *addr) struct gc_list *t = tmp->next; tmp->next = tmp->next->next; - RUBY_CRITICAL(free(t)); + xfree(t); break; } tmp = tmp->next; @@ -1457,7 +1457,7 @@ obj_free(rb_objspace_t *objspace, VALUE obj) case T_OBJECT: if (!(RANY(obj)->as.basic.flags & ROBJECT_EMBED) && RANY(obj)->as.object.as.heap.ivptr) { - RUBY_CRITICAL(free(RANY(obj)->as.object.as.heap.ivptr)); + xfree(RANY(obj)->as.object.as.heap.ivptr); } break; case T_MODULE: @@ -1470,7 +1470,7 @@ obj_free(rb_objspace_t *objspace, VALUE obj) if (RCLASS_IV_INDEX_TBL(obj)) { st_free_table(RCLASS_IV_INDEX_TBL(obj)); } - RUBY_CRITICAL(free(RANY(obj)->as.klass.ptr)); + xfree(RANY(obj)->as.klass.ptr); break; case T_STRING: rb_str_free(obj); @@ -1488,13 +1488,13 @@ obj_free(rb_objspace_t *objspace, VALUE obj) onig_free(RANY(obj)->as.regexp.ptr); } if (RANY(obj)->as.regexp.str) { - RUBY_CRITICAL(free(RANY(obj)->as.regexp.str)); + xfree(RANY(obj)->as.regexp.str); } break; case T_DATA: if (DATA_PTR(obj)) { if ((long)RANY(obj)->as.data.dfree == -1) { - RUBY_CRITICAL(free(DATA_PTR(obj))); + xfree(DATA_PTR(obj)); } else if (RANY(obj)->as.data.dfree) { (*RANY(obj)->as.data.dfree)(DATA_PTR(obj)); @@ -1506,8 +1506,8 @@ obj_free(rb_objspace_t *objspace, VALUE obj) struct rmatch *rm = RANY(obj)->as.match.rmatch; onig_region_free(&rm->regs, 0); if (rm->char_offset) - RUBY_CRITICAL(free(rm->char_offset)); - RUBY_CRITICAL(free(rm)); + xfree(rm->char_offset); + xfree(rm); } break; case T_FILE: @@ -1527,18 +1527,18 @@ obj_free(rb_objspace_t *objspace, VALUE obj) case T_BIGNUM: if (!(RBASIC(obj)->flags & RBIGNUM_EMBED_FLAG) && RBIGNUM_DIGITS(obj)) { - RUBY_CRITICAL(free(RBIGNUM_DIGITS(obj))); + xfree(RBIGNUM_DIGITS(obj)); } break; case T_NODE: switch (nd_type(obj)) { case NODE_SCOPE: if (RANY(obj)->as.node.u1.tbl) { - RUBY_CRITICAL(free(RANY(obj)->as.node.u1.tbl)); + xfree(RANY(obj)->as.node.u1.tbl); } break; case NODE_ALLOCA: - RUBY_CRITICAL(free(RANY(obj)->as.node.u1.node)); + xfree(RANY(obj)->as.node.u1.node); break; } return; /* no need to free iv_tbl */ @@ -1546,7 +1546,7 @@ obj_free(rb_objspace_t *objspace, VALUE obj) case T_STRUCT: if ((RBASIC(obj)->flags & RSTRUCT_EMBED_LEN_MASK) == 0 && RANY(obj)->as.rstruct.as.heap.ptr) { - RUBY_CRITICAL(free(RANY(obj)->as.rstruct.as.heap.ptr)); + xfree(RANY(obj)->as.rstruct.as.heap.ptr); } break; @@ -2106,7 +2106,7 @@ rb_gc_call_finalizer_at_exit(void) RANY(p)->as.basic.klass != rb_cThread) { p->as.free.flags = 0; if ((long)RANY(p)->as.data.dfree == -1) { - RUBY_CRITICAL(free(DATA_PTR(p))); + xfree(DATA_PTR(p)); } else if (RANY(p)->as.data.dfree) { (*RANY(p)->as.data.dfree)(DATA_PTR(p)); -- cgit