my_realloc.c
上传用户:jmzj888
上传日期:2007-01-02
资源大小:220k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
  2.    This file is public domain and comes with NO WARRANTY of any kind */
  3. #ifdef SAFEMALLOC /* We don't need SAFEMALLOC here */
  4. #undef SAFEMALLOC
  5. #endif
  6. #include "mysys_priv.h"
  7. #include "mysys_err.h"
  8. /* My memory re allocator */
  9. gptr my_realloc(gptr oldpoint, uint Size, myf MyFlags)
  10. {
  11.   gptr point;
  12.   DBUG_ENTER("my_realloc");
  13.   DBUG_PRINT("my",("ptr: %lx  Size: %u  MyFlags: %d",oldpoint, Size, MyFlags));
  14.   if (!oldpoint && (MyFlags & MY_ALLOW_ZERO_PTR))
  15.     DBUG_RETURN(my_malloc(Size,MyFlags));
  16. #ifdef USE_HALLOC
  17.   if (!(point = malloc(Size)))
  18.   {
  19.     if (MyFlags & MY_FREE_ON_ERROR)
  20.       my_free(oldpoint,MyFlags);
  21.     if (MyFlags & MY_HOLD_ON_ERROR)
  22.       DBUG_RETURN(oldpoint);
  23.     my_errno=errno;
  24.     if (MyFlags & MY_FAE+MY_WME)
  25.       my_error(EE_OUTOFMEMORY, MYF(ME_BELL+ME_WAITTANG),Size);
  26.   }
  27.   else
  28.   {
  29.     memcpy(point,oldpoint,Size);
  30.     free(oldpoint);
  31.   }
  32. #else
  33.   if ((point = realloc(oldpoint,Size)) == NULL)
  34.   {
  35.     if (MyFlags & MY_FREE_ON_ERROR)
  36.       my_free(oldpoint,MyFLAGS);
  37.     if (MyFlags & MY_HOLD_ON_ERROR)
  38.       DBUG_RETURN(oldpoint);
  39.     my_errno=errno;
  40.     if (MyFlags & (MY_FAE+MY_WME))
  41.       my_error(EE_OUTOFMEMORY, MYF(ME_BELL+ME_WAITTANG), Size);
  42.   }
  43. #endif
  44.   DBUG_PRINT("exit",("ptr: %lx",point));
  45.   DBUG_RETURN(point);
  46. } /* my_realloc */