gc.c: check of size in ruby_sized_xrealloc
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
525844f257
commit
849bf24abf
6
gc.c
6
gc.c
@ -7880,7 +7880,7 @@ objspace_xrealloc(rb_objspace_t *objspace, void *ptr, size_t new_size, size_t ol
|
|||||||
{
|
{
|
||||||
void *mem;
|
void *mem;
|
||||||
|
|
||||||
if (!ptr) return objspace_xmalloc(objspace, new_size);
|
if (!ptr) return objspace_xmalloc0(objspace, new_size);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The behavior of realloc(ptr, 0) is implementation defined.
|
* The behavior of realloc(ptr, 0) is implementation defined.
|
||||||
@ -7979,6 +7979,10 @@ ruby_xcalloc(size_t n, size_t size)
|
|||||||
void *
|
void *
|
||||||
ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size)
|
ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size)
|
||||||
{
|
{
|
||||||
|
if ((ssize_t)new_size < 0) {
|
||||||
|
negative_size_allocation_error("too large allocation size");
|
||||||
|
}
|
||||||
|
|
||||||
return objspace_xrealloc(&rb_objspace, ptr, new_size, old_size);
|
return objspace_xrealloc(&rb_objspace, ptr, new_size, old_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user