version 1.3, 2015/04/20 18:19:49
|
version 1.4, 2015/09/25 20:24:20
|
|
|
#include <assert.h> | #include <assert.h> |
#include "batch.h" | #include "batch.h" |
#include <pal/strings.h> | #include <pal/strings.h> |
|
#include <pal/intsafe.h> |
| |
#define BATCH_PAGE_SIZE ((size_t)(BLOCK_SIZE * 2)) | #define BATCH_PAGE_SIZE ((size_t)(BLOCK_SIZE * 2)) |
#define BLOCK_SIZE ((size_t)512) | #define BLOCK_SIZE ((size_t)512) |
|
|
/* put batch inside first page */ | /* put batch inside first page */ |
if (!(*self)) | if (!(*self)) |
{ | { |
size_t size = sizeof(Page) + buffer[pages].pageSize; |
size_t size; |
size_t size8; | size_t size8; |
|
size_t alloc_size; |
|
|
|
if (SizeTAdd(sizeof(Page), buffer[pages].pageSize, &size) != S_OK) |
|
{ |
|
return MI_FALSE; |
|
} |
| |
/* Round request size to a multiple of eight */ | /* Round request size to a multiple of eight */ |
size8 = (size + 7) & ~7; | size8 = (size + 7) & ~7; |
| |
page = PAL_Malloc(size8 + sizeof(Batch)); |
if (SizeTAdd(size8, sizeof(Batch), &alloc_size) == S_OK) |
|
{ |
|
page = PAL_Malloc(alloc_size); |
|
} |
|
else |
|
{ |
|
return MI_FALSE; |
|
} |
| |
if (!page) | if (!page) |
return MI_FALSE; | return MI_FALSE; |
|
|
Batch_Init(*self, BATCH_MAX_PAGES); | Batch_Init(*self, BATCH_MAX_PAGES); |
} | } |
else | else |
page = PAL_Malloc(sizeof(Page) + buffer[pages].pageSize); |
{ |
|
size_t alloc_size; |
|
if (SizeTAdd(sizeof(Page), buffer[pages].pageSize, &alloc_size) == S_OK) |
|
{ |
|
page = PAL_Malloc(alloc_size); |
|
} |
|
else |
|
{ |
|
page = NULL; |
|
} |
|
} |
| |
if (!page) | if (!page) |
{ | { |