summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-09-01 12:02:36 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-09-01 12:02:36 +0000
commit2c8e7a50c1db8fea3fb012052828ad1eea51883f (patch)
tree9948c4ef01b8662c9d14a96cc228d7844af68b71 /gc.c
parent0c5e6ab2bb6726b0d70e99db25d5369e196d8ddc (diff)
* include/ruby/ruby.h (struct RBignum): embed digits in RBignum for
small bignums. * bignum.c: RBignum embeded digits implemented. * include/ruby/intern.h: declare rb_big_resize. * gc.c: don't free embedded digits. * numeric.c: replace direct bignum field accessor by abstract field accessor such as RBIGNUM(val)->sign to RBIGNUM_SIGN(val). * sprintf.c: ditto. * compar.c: ditto. * marshal.c: ditto. * random.c: ditto. * .gdbinit: support embedded small bignums. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gc.c b/gc.c
index 7d521eb07a..c107c4e956 100644
--- a/gc.c
+++ b/gc.c
@@ -1311,8 +1311,8 @@ obj_free(VALUE obj)
break;
case T_BIGNUM:
- if (RANY(obj)->as.bignum.digits) {
- RUBY_CRITICAL(free(RANY(obj)->as.bignum.digits));
+ if (!(RBASIC(obj)->flags & RBIGNUM_EMBED_FLAG) && RBIGNUM_DIGITS(obj)) {
+ RUBY_CRITICAL(free(RBIGNUM_DIGITS(obj)));
}
break;
case T_NODE: