diff options
Diffstat (limited to 'ext/mysql/libmysql/my_realloc.c')
-rw-r--r-- | ext/mysql/libmysql/my_realloc.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/ext/mysql/libmysql/my_realloc.c b/ext/mysql/libmysql/my_realloc.c new file mode 100644 index 0000000000..1d26140b01 --- /dev/null +++ b/ext/mysql/libmysql/my_realloc.c @@ -0,0 +1,51 @@ +/* Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB + This file is public domain and comes with NO WARRANTY of any kind */ + +#ifdef SAFEMALLOC /* We don't need SAFEMALLOC here */ +#undef SAFEMALLOC +#endif + +#include "mysys_priv.h" +#include "mysys_err.h" + + /* My memory re allocator */ + +gptr my_realloc(gptr oldpoint, uint Size, myf MyFlags) +{ + gptr point; + DBUG_ENTER("my_realloc"); + DBUG_PRINT("my",("ptr: %lx Size: %u MyFlags: %d",oldpoint, Size, MyFlags)); + + if (!oldpoint && (MyFlags & MY_ALLOW_ZERO_PTR)) + DBUG_RETURN(my_malloc(Size,MyFlags)); +#ifdef USE_HALLOC + if (!(point = malloc(Size))) + { + if (MyFlags & MY_FREE_ON_ERROR) + my_free(oldpoint,MyFlags); + if (MyFlags & MY_HOLD_ON_ERROR) + DBUG_RETURN(oldpoint); + my_errno=errno; + if (MyFlags & MY_FAE+MY_WME) + my_error(EE_OUTOFMEMORY, MYF(ME_BELL+ME_WAITTANG),Size); + } + else + { + memcpy(point,oldpoint,Size); + free(oldpoint); + } +#else + if ((point = realloc(oldpoint,Size)) == NULL) + { + if (MyFlags & MY_FREE_ON_ERROR) + my_free(oldpoint,MyFLAGS); + if (MyFlags & MY_HOLD_ON_ERROR) + DBUG_RETURN(oldpoint); + my_errno=errno; + if (MyFlags & (MY_FAE+MY_WME)) + my_error(EE_OUTOFMEMORY, MYF(ME_BELL+ME_WAITTANG), Size); + } +#endif + DBUG_PRINT("exit",("ptr: %lx",point)); + DBUG_RETURN(point); +} /* my_realloc */ |