diff options
Diffstat (limited to 'include/my_sys.h')
-rw-r--r-- | include/my_sys.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/include/my_sys.h b/include/my_sys.h index 61e2d97f863..31d4ffd7667 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -175,6 +175,7 @@ extern void set_malloc_size_cb(MALLOC_SIZE_CB func); /* defines when allocating data */ extern void *my_malloc(size_t Size,myf MyFlags); extern void *my_multi_malloc(myf MyFlags, ...); +extern void *my_multi_malloc_large(myf MyFlags, ...); extern void *my_realloc(void *oldpoint, size_t Size, myf MyFlags); extern void my_free(void *ptr); extern void *my_memdup(const void *from,size_t length,myf MyFlags); @@ -204,16 +205,17 @@ extern void my_large_free(uchar *ptr); #endif /* GNUC */ #define my_alloca(SZ) alloca((size_t) (SZ)) #define my_afree(PTR) ((void)0) -#define my_safe_alloca(size, max_alloca_sz) ((size <= max_alloca_sz) ? \ - my_alloca(size) : \ - my_malloc(size, MYF(0))) -#define my_safe_afree(ptr, size, max_alloca_sz) if (size > max_alloca_sz) \ - my_free(ptr) +#define MAX_ALLOCA_SZ 4096 +#define my_safe_alloca(size) (((size) <= MAX_ALLOCA_SZ) ? \ + my_alloca(size) : \ + my_malloc((size), MYF(MY_THREAD_SPECIFIC|MY_WME))) +#define my_safe_afree(ptr, size) \ + do { if ((size) > MAX_ALLOCA_SZ) my_free(ptr); } while(0) #else #define my_alloca(SZ) my_malloc(SZ,MYF(MY_FAE)) #define my_afree(PTR) my_free(PTR) -#define my_safe_alloca(size, max_alloca_sz) my_alloca(size) -#define my_safe_afree(ptr, size, max_alloca_sz) my_afree(ptr) +#define my_safe_alloca(size) my_alloca(size) +#define my_safe_afree(ptr, size) my_afree(ptr) #endif /* HAVE_ALLOCA */ #ifndef errno /* did we already get it? */ @@ -613,7 +615,6 @@ my_off_t my_b_safe_tell(IO_CACHE* info); /* picks the correct tell() */ int my_b_pread(IO_CACHE *info, uchar *Buffer, size_t Count, my_off_t pos); typedef uint32 ha_checksum; -extern ulong my_crc_dbug_check; #include <my_alloc.h> |