summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-08 10:01:40 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-08 10:01:40 +0000
commit72ba13aa8e86eb7f12bd17737a689ad2ec214036 (patch)
treea45e9d137742a163baea3ee66c918c18b9808b1e /gc.c
parent4a7311e12977ca2cd388f609c3c705ba219bfee5 (diff)
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@17017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/gc.c b/gc.c
index 032f70714a..3da18271ef 100644
--- a/gc.c
+++ b/gc.c
@@ -476,6 +476,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)
{
rb_objspace_t *objspace = &rb_objspace;
@@ -488,13 +495,6 @@ rb_gc_register_address(VALUE *addr)
}
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)
{
rb_objspace_t *objspace = &rb_objspace;
@@ -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));