diff options
| author | Sergei Golubchik <serg@mariadb.org> | 2018-02-01 21:55:30 +0100 |
|---|---|---|
| committer | Sergei Golubchik <serg@mariadb.org> | 2018-02-02 10:09:44 +0100 |
| commit | d4df7bc9b1fbdfb5c98134091a9ff998af60954f (patch) | |
| tree | dfd2f5128ccf94b6e86d2475aee23acf53fa868c /mysys/my_alloc.c | |
| parent | 80d3eee072025f34984e474ea160651eac9e11e5 (diff) | |
| parent | 96cb428b350ba48ee17ad9968d08f5318e48258c (diff) | |
| download | mariadb-git-d4df7bc9b1fbdfb5c98134091a9ff998af60954f.tar.gz | |
Merge branch 'github/10.0' into 10.1
Diffstat (limited to 'mysys/my_alloc.c')
| -rw-r--r-- | mysys/my_alloc.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c index 7275f602525..1b0ef857afa 100644 --- a/mysys/my_alloc.c +++ b/mysys/my_alloc.c @@ -26,6 +26,8 @@ #define MALLOC_FLAG(A) ((A & 1) ? MY_THREAD_SPECIFIC : 0) +#define TRASH_MEM(X) TRASH_FREE(((char*)(X) + ((X)->size-(X)->left)), (X)->left) + /* Initialize memory root @@ -73,12 +75,13 @@ void init_alloc_root(MEM_ROOT *mem_root, size_t block_size, if (pre_alloc_size) { if ((mem_root->free= mem_root->pre_alloc= - (USED_MEM*) my_malloc(pre_alloc_size+ ALIGN_SIZE(sizeof(USED_MEM)), - MYF(my_flags)))) + (USED_MEM*) my_malloc(pre_alloc_size + ALIGN_SIZE(sizeof(USED_MEM)), + MYF(my_flags)))) { mem_root->free->size= pre_alloc_size+ALIGN_SIZE(sizeof(USED_MEM)); mem_root->free->left= pre_alloc_size; mem_root->free->next= 0; + TRASH_MEM(mem_root->free); } } #endif @@ -148,6 +151,7 @@ void reset_root_defaults(MEM_ROOT *mem_root, size_t block_size, mem->left= pre_alloc_size; mem->next= *prev; *prev= mem_root->pre_alloc= mem; + TRASH_MEM(mem); } else { @@ -248,6 +252,7 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length) next->size= get_size; next->left= get_size-ALIGN_SIZE(sizeof(USED_MEM)); *prev=next; + TRASH_MEM(next); } point= (uchar*) ((char*) next+ (next->size-next->left)); @@ -316,8 +321,6 @@ void *multi_alloc_root(MEM_ROOT *root, ...) DBUG_RETURN((void*) start); } -#define TRASH_MEM(X) TRASH(((char*)(X) + ((X)->size-(X)->left)), (X)->left) - /* Mark all data in blocks free for reusage */ static inline void mark_blocks_free(MEM_ROOT* root) |
