From 28d28e844e58d0f6f17866b4fae5db19cba805db Mon Sep 17 00:00:00 2001 From: nagachika Date: Wed, 11 Jan 2012 14:09:10 +0000 Subject: [PATCH] * gc.c (ruby_mimmalloc): don't set allocated size to header. ruby_mimmalloc() doesn't increment allocated_size/allocations and decrement them in ruby_xfree() cause inconsistency. * gc.c (ruby_xfree): don't decrement allocated_size/allocations if allocated size record is 0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++++ gc.c | 9 ++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1e503e712d..ee8afb4780 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Wed Jan 11 22:52:51 2012 CHIKANAGA Tomoyuki + + * gc.c (ruby_mimmalloc): don't set allocated size to header. + ruby_mimmalloc() doesn't increment allocated_size/allocations and + decrement them in ruby_xfree() cause inconsistency. + + * gc.c (ruby_xfree): don't decrement allocated_size/allocations if + allocated size record is 0. + Wed Jan 11 22:36:43 2012 CHIKANAGA Tomoyuki * test/readline/test_readline.rb (test_completion_proc_empty_result): diff --git a/gc.c b/gc.c index 6ce83469e6..5aac9738e3 100644 --- a/gc.c +++ b/gc.c @@ -866,8 +866,10 @@ vm_xfree(rb_objspace_t *objspace, void *ptr) size_t size; ptr = ((size_t *)ptr) - 1; size = ((size_t*)ptr)[0]; - objspace->malloc_params.allocated_size -= size; - objspace->malloc_params.allocations--; + if (size) { + objspace->malloc_params.allocated_size -= size; + objspace->malloc_params.allocations--; + } #endif free(ptr); @@ -950,7 +952,8 @@ ruby_mimmalloc(size_t size) #endif mem = malloc(size); #if CALC_EXACT_MALLOC_SIZE - ((size_t *)mem)[0] = size; + /* set 0 for consistency of allocated_size/allocations */ + ((size_t *)mem)[0] = 0; mem = (size_t *)mem + 1; #endif return mem;