summaryrefslogtreecommitdiff
path: root/mysys/my_alloc.c
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2018-01-29 18:09:33 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2018-01-29 18:09:33 +0200
commitd04fcbbaed9044f16a59ba7eea866e1b78b675a5 (patch)
treec5bd2814f9aef990f06df35d8ca49550ff794ef1 /mysys/my_alloc.c
parent2749d2509661c2addbf78ec5f5b2218ff7301b0f (diff)
parentb76881a23cff7aeef1126560410613d9d7bbbb7d (diff)
downloadmariadb-git-d04fcbbaed9044f16a59ba7eea866e1b78b675a5.tar.gz
WIP Merge 10.0 into 10.1
Bootstrap fails as follows: Logging: /mariadb/10.1/mysql-test/mysql-test-run.pl --mem --parallel=auto --force --retry=0 --suite=innodb vardir: /mariadb/10.1/build/mysql-test/var Removing old var directory... Creating var directory '/mariadb/10.1/build/mysql-test/var'... - symlinking 'var' to '/dev/shm/var_auto_CT5B' Checking supported features... mysqld: /mariadb/10.1/sql/sql_cache.cc:2767: void Query_cache::free_cache(): Assertion `m_cache_lock_status == LOCKED_NO_WAIT || m_cache_status == DISABLE_REQUEST' failed. 180129 18:05:25 [ERROR] mysqld got signal 6 ;
Diffstat (limited to 'mysys/my_alloc.c')
-rw-r--r--mysys/my_alloc.c11
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)