Change rb_darray_realloc_mul_add_without_gc to check for overflow
This commit is contained in:
parent
e596516182
commit
bd70534e97
Notes:
git
2025-01-02 16:03:24 +00:00
5
darray.h
5
darray.h
@ -187,12 +187,11 @@ rb_darray_calloc_mul_add_without_gc(size_t x, size_t y, size_t z)
|
|||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Internal function. Like rb_xrealloc_mul_add but does not trigger GC and does
|
/* Internal function. Like rb_xrealloc_mul_add but does not trigger GC. */
|
||||||
* not check for overflow in arithmetic. */
|
|
||||||
static inline void *
|
static inline void *
|
||||||
rb_darray_realloc_mul_add_without_gc(const void *orig_ptr, size_t x, size_t y, size_t z)
|
rb_darray_realloc_mul_add_without_gc(const void *orig_ptr, size_t x, size_t y, size_t z)
|
||||||
{
|
{
|
||||||
size_t size = (x * y) + z;
|
size_t size = rbimpl_size_add_or_raise(rbimpl_size_mul_or_raise(x, y), z);
|
||||||
|
|
||||||
void *ptr = realloc((void *)orig_ptr, size);
|
void *ptr = realloc((void *)orig_ptr, size);
|
||||||
if (ptr == NULL) rb_bug("rb_darray_realloc_mul_add_without_gc: failed");
|
if (ptr == NULL) rb_bug("rb_darray_realloc_mul_add_without_gc: failed");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user