diff options
author | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2010-06-11 17:48:24 +0400 |
---|---|---|
committer | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2010-06-11 17:48:24 +0400 |
commit | f84b3f5c21c62ebe3b489250a09aca0ffde1313c (patch) | |
tree | bad36a3866fc1f57ed09d6de5a590fa2e12bacfe /mysys/my_alloc.c | |
parent | 26a034959299cb72d04d92ab330dfb83ef6082a6 (diff) | |
parent | e5cf56ef80391caca2f06b34fc1de1313196e91f (diff) | |
download | mariadb-git-f84b3f5c21c62ebe3b489250a09aca0ffde1313c.tar.gz |
Manual merge from mysql-5.1-bugteam to mysql-trunk-merge.
conflicts:
conflict mysys/safemalloc.c
conflict sql/mysqld.cc
conflict sql/sp.cc
conflict sql/sql_lex.cc
conflict sql/sql_lex.h
conflict sql/sql_parse.cc
conflict sql/sql_prepare.cc
Diffstat (limited to 'mysys/my_alloc.c')
-rw-r--r-- | mysys/my_alloc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c index 9c45cdc2277..19e51880209 100644 --- a/mysys/my_alloc.c +++ b/mysys/my_alloc.c @@ -154,6 +154,14 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length) DBUG_ASSERT(alloc_root_inited(mem_root)); + DBUG_EXECUTE_IF("simulate_out_of_memory", + { + if (mem_root->error_handler) + (*mem_root->error_handler)(); + DBUG_SET("-d,simulate_out_of_memory"); + DBUG_RETURN((void*) 0); /* purecov: inspected */ + }); + length+=ALIGN_SIZE(sizeof(USED_MEM)); if (!(next = (USED_MEM*) my_malloc(length,MYF(MY_WME | ME_FATALERROR)))) { @@ -176,6 +184,14 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length) DBUG_PRINT("enter",("root: 0x%lx", (long) mem_root)); DBUG_ASSERT(alloc_root_inited(mem_root)); + DBUG_EXECUTE_IF("simulate_out_of_memory", + { + /* Avoid reusing an already allocated block */ + if (mem_root->error_handler) + (*mem_root->error_handler)(); + DBUG_SET("-d,simulate_out_of_memory"); + DBUG_RETURN((void*) 0); /* purecov: inspected */ + }); length= ALIGN_SIZE(length); if ((*(prev= &mem_root->free)) != NULL) { |