mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
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
This commit is contained in:
commit
f84b3f5c21
18 changed files with 179 additions and 47 deletions
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,13 +31,23 @@ void *my_malloc(size_t size, myf my_flags)
|
|||
|
||||
if (!size)
|
||||
size=1; /* Safety */
|
||||
if ((point = (char*)malloc(size)) == NULL)
|
||||
|
||||
point= (char *) malloc(size);
|
||||
DBUG_EXECUTE_IF("simulate_out_of_memory",
|
||||
{
|
||||
free(point);
|
||||
point= NULL;
|
||||
});
|
||||
|
||||
if (point == NULL)
|
||||
{
|
||||
my_errno=errno;
|
||||
if (my_flags & MY_FAE)
|
||||
error_handler_hook=fatal_error_handler_hook;
|
||||
if (my_flags & (MY_FAE+MY_WME))
|
||||
my_error(EE_OUTOFMEMORY, MYF(ME_BELL+ME_WAITTANG+ME_NOREFRESH),size);
|
||||
DBUG_EXECUTE_IF("simulate_out_of_memory",
|
||||
DBUG_SET("-d,simulate_out_of_memory"););
|
||||
if (my_flags & MY_FAE)
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,6 +139,11 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags)
|
|||
size + /* size requested */
|
||||
4 + /* overrun mark */
|
||||
sf_malloc_endhunc);
|
||||
DBUG_EXECUTE_IF("simulate_out_of_memory",
|
||||
{
|
||||
free(irem);
|
||||
irem= NULL;
|
||||
});
|
||||
}
|
||||
/* Check if there isn't anymore memory avaiable */
|
||||
if (!irem)
|
||||
|
|
@ -159,6 +164,8 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags)
|
|||
}
|
||||
DBUG_PRINT("error",("Out of memory, in use: %ld at line %d, '%s'",
|
||||
(long)sf_malloc_max_memory,lineno, filename));
|
||||
DBUG_EXECUTE_IF("simulate_out_of_memory",
|
||||
DBUG_SET("-d,simulate_out_of_memory"););
|
||||
if (MyFlags & MY_FAE)
|
||||
exit(1);
|
||||
DBUG_RETURN ((void*) 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue