Commit 1453bd20 by Vicent Marti

Merge pull request #2451 from libgit2/rb/round-up-pool-allocations

Round up pool alloc sizes for alignment
parents dcdb8500 5fa8cda9
...@@ -146,7 +146,7 @@ GIT_INLINE(void) pool_remove_page( ...@@ -146,7 +146,7 @@ GIT_INLINE(void) pool_remove_page(
void *git_pool_malloc(git_pool *pool, uint32_t items) void *git_pool_malloc(git_pool *pool, uint32_t items)
{ {
git_pool_page *scan = pool->open, *prev; git_pool_page *scan = pool->open, *prev;
uint32_t size = items * pool->item_size; uint32_t size = ((items * pool->item_size) + 7) & ~7;
void *ptr = NULL; void *ptr = NULL;
pool->has_string_alloc = 0; pool->has_string_alloc = 0;
......
...@@ -38,19 +38,19 @@ void test_core_pool__1(void) ...@@ -38,19 +38,19 @@ void test_core_pool__1(void)
cl_assert(git_pool_malloc(&p, i) != NULL); cl_assert(git_pool_malloc(&p, i) != NULL);
/* with fixed page size, allocation must end up with these values */ /* with fixed page size, allocation must end up with these values */
cl_assert(git_pool__open_pages(&p) == 1); cl_assert_equal_i(1, git_pool__open_pages(&p));
cl_assert(git_pool__full_pages(&p) == 505); cl_assert_equal_i(507, git_pool__full_pages(&p));
git_pool_clear(&p); git_pool_clear(&p);
cl_git_pass(git_pool_init(&p, 1, 4100)); cl_git_pass(git_pool_init(&p, 1, 4120));
for (i = 2010; i > 0; i--) for (i = 2010; i > 0; i--)
cl_assert(git_pool_malloc(&p, i) != NULL); cl_assert(git_pool_malloc(&p, i) != NULL);
/* with fixed page size, allocation must end up with these values */ /* with fixed page size, allocation must end up with these values */
cl_assert(git_pool__open_pages(&p) == 1); cl_assert_equal_i(1, git_pool__open_pages(&p));
cl_assert(git_pool__full_pages(&p) == 492); cl_assert_equal_i(492, git_pool__full_pages(&p));
git_pool_clear(&p); git_pool_clear(&p);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment