mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
avoid passing NULL to memset
`GC::Profiler.enable; GC::Profiler.clear` tries to clear objspace->profile.records but it has never been allocated before. Thus the MEMCPY took NULL argument before this changeset. The objspace->profile.records is allocated appropriately elsewhere. Why not juts free it if any? That should work.
This commit is contained in:
parent
34e1079aef
commit
f95f07dad3
1 changed files with 6 additions and 8 deletions
14
gc.c
14
gc.c
|
@ -10476,16 +10476,14 @@ static VALUE
|
|||
gc_profile_clear(void)
|
||||
{
|
||||
rb_objspace_t *objspace = &rb_objspace;
|
||||
if (GC_PROFILE_RECORD_DEFAULT_SIZE * 2 < objspace->profile.size) {
|
||||
objspace->profile.size = GC_PROFILE_RECORD_DEFAULT_SIZE * 2;
|
||||
objspace->profile.records = realloc(objspace->profile.records, sizeof(gc_profile_record) * objspace->profile.size);
|
||||
if (!objspace->profile.records) {
|
||||
rb_memerror();
|
||||
}
|
||||
}
|
||||
MEMZERO(objspace->profile.records, gc_profile_record, objspace->profile.size);
|
||||
void *p = objspace->profile.records;
|
||||
objspace->profile.records = NULL;
|
||||
objspace->profile.size = 0;
|
||||
objspace->profile.next_index = 0;
|
||||
objspace->profile.current_record = 0;
|
||||
if (p) {
|
||||
free(p);
|
||||
}
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue