зеркало из https://github.com/github/ruby.git
* 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
This commit is contained in:
Родитель
2afa0b4cca
Коммит
28d28e844e
|
@ -1,3 +1,12 @@
|
|||
Wed Jan 11 22:52:51 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
|
||||
|
||||
* 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 <nagachika00@gmail.com>
|
||||
|
||||
* test/readline/test_readline.rb (test_completion_proc_empty_result):
|
||||
|
|
9
gc.c
9
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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче