mm/mempool: fix bug about size mismatch and binary find

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
This commit is contained in:
dongjiuzhu1
2022-09-16 16:55:09 +08:00
committed by Xiang Xiao
parent 5828e5bb88
commit 30bede7940
2 changed files with 40 additions and 28 deletions
+14 -11
View File
@@ -99,19 +99,22 @@ int mempool_init(FAR struct mempool_s *pool, FAR const char *name)
sq_init(&pool->elist);
count = pool->ninitial + pool->ninterrupt;
base = mempool_malloc(pool, sizeof(*base) +
pool->bsize * count);
if (base == NULL)
if (count != 0)
{
return -ENOMEM;
}
base = mempool_malloc(pool, sizeof(*base) +
pool->bsize * count);
if (base == NULL)
{
return -ENOMEM;
}
sq_addfirst(base, &pool->elist);
mempool_add_list(&pool->ilist, base + 1,
pool->ninterrupt, pool->bsize);
mempool_add_list(&pool->list, (FAR char *)(base + 1) +
pool->ninterrupt * pool->bsize,
pool->ninitial, pool->bsize);
sq_addfirst(base, &pool->elist);
mempool_add_list(&pool->ilist, base + 1,
pool->ninterrupt, pool->bsize);
mempool_add_list(&pool->list, (FAR char *)(base + 1) +
pool->ninterrupt * pool->bsize,
pool->ninitial, pool->bsize);
}
if (pool->wait && pool->nexpand == 0)
{