Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions darray.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,14 +161,12 @@ rb_darray_free(void *ary)
xfree(ary);
}

void ruby_sized_xfree(void *x, size_t size);

static inline void
rb_darray_free_sized0(void *ary, size_t element_size)
{
const rb_darray_meta_t *meta = ary;
if (meta) {
ruby_sized_xfree(ary, sizeof(*meta) + (element_size * meta->capa));
ruby_xfree_sized(ary, sizeof(*meta) + (element_size * meta->capa));
}
}
#define rb_darray_free_sized(ary, T) rb_darray_free_sized0((ary), sizeof(T))
Expand Down Expand Up @@ -203,7 +201,7 @@ rb_darray_calloc_mul_add_without_gc(size_t x, size_t y, size_t z)
return ptr;
}

void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size);
void *ruby_xrealloc_sized(void *ptr, size_t new_size, size_t old_size);

/* Internal function. Like rb_xrealloc_mul_add. */
static inline void *
Expand All @@ -212,7 +210,7 @@ rb_darray_realloc_mul_add(void *orig_ptr, size_t capa, size_t element_size, size
size_t size = rbimpl_size_add_or_raise(rbimpl_size_mul_or_raise(capa, element_size), header_size);
size_t old_size = (rb_darray_capa(orig_ptr) * element_size) + header_size; // We know it won't overflow

void *ptr = ruby_sized_xrealloc(orig_ptr, size, old_size);
void *ptr = ruby_xrealloc_sized(orig_ptr, size, old_size);
RUBY_ASSERT(ptr != NULL);

return ptr;
Expand Down
Loading
Loading