List:Commits« Previous MessageNext Message »
From:Alexey Kopytov Date:August 29 2007 1:13pm
Subject:bk commit into 5.0 tree (kaa:1.2512) BUG#5731
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of kaa. When kaa does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-08-29 17:13:23+04:00, kaa@stripped +8 -0
  Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.
  
  This is required to allow key_buffer_size > 4 GB (bug #5731).

  include/my_sys.h@stripped, 2007-08-29 17:13:19+04:00, kaa@stripped +13 -13
    Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.

  mysys/my_init.c@stripped, 2007-08-29 17:13:19+04:00, kaa@stripped +1 -1
    Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.

  mysys/my_largepage.c@stripped, 2007-08-29 17:13:19+04:00, kaa@stripped +13 -13
    Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.

  mysys/my_lockmem.c@stripped, 2007-08-29 17:13:19+04:00, kaa@stripped +9 -9
    Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.

  mysys/my_malloc.c@stripped, 2007-08-29 17:13:19+04:00, kaa@stripped +19 -19
    Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.

  mysys/my_static.c@stripped, 2007-08-29 17:13:19+04:00, kaa@stripped +2 -2
    Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.

  mysys/my_static.h@stripped, 2007-08-29 17:13:19+04:00, kaa@stripped +1 -1
    Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.

  mysys/safemalloc.c@stripped, 2007-08-29 17:13:19+04:00, kaa@stripped +46 -44
    Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms.

diff -Nrup a/include/my_sys.h b/include/my_sys.h
--- a/include/my_sys.h	2007-05-17 11:48:09 +04:00
+++ b/include/my_sys.h	2007-08-29 17:13:19 +04:00
@@ -147,11 +147,11 @@ extern ulonglong sf_malloc_mem_limit;
 #define TERMINATE(A) {}
 #define QUICK_SAFEMALLOC
 #define NORMAL_SAFEMALLOC
-extern gptr my_malloc(uint Size,myf MyFlags);
+extern void *my_malloc(size_t Size, myf MyFlags);
 #define my_malloc_ci(SZ,FLAG) my_malloc( SZ, FLAG )
 extern gptr my_realloc(gptr oldpoint,uint Size,myf MyFlags);
-extern void my_no_flags_free(gptr ptr);
-extern gptr my_memdup(const byte *from,uint length,myf MyFlags);
+extern void my_no_flags_free(void *ptr);
+extern void *my_memdup(const void *from, size_t length, myf MyFlags);
 extern char *my_strdup(const char *from,myf MyFlags);
 extern char *my_strdup_with_length(const char *from, uint length,
 				   myf MyFlags);
@@ -165,8 +165,8 @@ extern char *my_strdup_with_length(const
 
 #ifdef HAVE_LARGE_PAGES
 extern uint my_get_large_page_size(void);
-extern gptr my_large_malloc(uint size, myf my_flags);
-extern void my_large_free(gptr ptr, myf my_flags);
+extern uchar *my_large_malloc(size_t size, myf my_flags);
+extern void my_large_free(uchar *ptr, myf my_flags);
 #else
 #define my_get_large_page_size() (0)
 #define my_large_malloc(A,B) my_malloc_lock((A),(B))
@@ -590,15 +590,15 @@ extern uint my_fwrite(FILE *stream,const
 		      myf MyFlags);
 extern my_off_t my_fseek(FILE *stream,my_off_t pos,int whence,myf MyFlags);
 extern my_off_t my_ftell(FILE *stream,myf MyFlags);
-extern gptr _mymalloc(uint uSize,const char *sFile,
-		      uint uLine, myf MyFlag);
-extern gptr _myrealloc(gptr pPtr,uint uSize,const char *sFile,
-		       uint uLine, myf MyFlag);
+extern void *_mymalloc(size_t uSize, const char *sFile,
+                       uint uLine, myf MyFlag);
+extern void *_myrealloc(void *pPtr, size_t uSize, const char *sFile,
+                        uint uLine, myf MyFlag);
 extern gptr my_multi_malloc _VARARGS((myf MyFlags, ...));
-extern void _myfree(gptr pPtr,const char *sFile,uint uLine, myf MyFlag);
+extern void _myfree(void *pPtr, const char *sFile, uint uLine, myf MyFlag);
 extern int _sanity(const char *sFile,unsigned int uLine);
-extern gptr _my_memdup(const byte *from,uint length,
-		       const char *sFile, uint uLine,myf MyFlag);
+extern void *_my_memdup(const void *from, size_t length,
+                        const char *sFile, uint uLine, myf MyFlag);
 extern my_string _my_strdup(const char *from, const char *sFile, uint uLine,
 			    myf MyFlag);
 extern char *_my_strdup_with_length(const char *from, uint length,
@@ -626,7 +626,7 @@ extern int nt_share_delete(const char *n
 #endif
 
 #ifndef TERMINATE
-extern void TERMINATE(FILE *file);
+extern void TERMINATE(FILE *file, uint flag);
 #endif
 extern void init_glob_errs(void);
 extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
diff -Nrup a/mysys/my_init.c b/mysys/my_init.c
--- a/mysys/my_init.c	2007-05-14 18:04:34 +04:00
+++ b/mysys/my_init.c	2007-08-29 17:13:19 +04:00
@@ -183,7 +183,7 @@ Voluntary context switches %ld, Involunt
     fprintf(info_file,"\nRun time: %.1f\n",(double) clock()/CLOCKS_PER_SEC);
 #endif
 #if defined(SAFEMALLOC)
-    TERMINATE(stderr);		/* Give statistic on screen */
+    TERMINATE(stderr, (infoflag & MY_GIVE_INFO) != 0);		/* Give statistic on screen */
 #elif defined(__WIN__) && defined(_MSC_VER)
    _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
    _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDERR );
diff -Nrup a/mysys/my_largepage.c b/mysys/my_largepage.c
--- a/mysys/my_largepage.c	2006-12-23 22:04:07 +03:00
+++ b/mysys/my_largepage.c	2007-08-29 17:13:19 +04:00
@@ -26,8 +26,8 @@
 #endif
 
 static uint my_get_large_page_size_int(void);
-static gptr my_large_malloc_int(uint size, myf my_flags);
-static my_bool my_large_free_int(gptr ptr, myf my_flags);
+static uchar* my_large_malloc_int(size_t size, myf my_flags);
+static my_bool my_large_free_int(uchar* ptr, myf my_flags);
 
 /* Gets the size of large pages from the OS */
 
@@ -48,9 +48,9 @@ uint my_get_large_page_size(void)
   my_malloc_lock() in case of failure
 */
 
-gptr my_large_malloc(uint size, myf my_flags)
+uchar* my_large_malloc(size_t size, myf my_flags)
 {
-  gptr ptr;
+  uchar* ptr;
   DBUG_ENTER("my_large_malloc");
   
   if (my_use_large_pages && my_large_page_size)
@@ -70,7 +70,7 @@ gptr my_large_malloc(uint size, myf my_f
   to my_free_lock() in case of failure
  */
 
-void my_large_free(gptr ptr, myf my_flags __attribute__((unused)))
+void my_large_free(uchar* ptr, myf my_flags __attribute__((unused)))
 {
   DBUG_ENTER("my_large_free");
   
@@ -113,29 +113,29 @@ finish:
 #if HAVE_DECL_SHM_HUGETLB
 /* Linux-specific large pages allocator  */
     
-gptr my_large_malloc_int(uint size, myf my_flags)
+uchar* my_large_malloc_int(size_t size, myf my_flags)
 {
   int shmid;
-  gptr ptr;
+  uchar* ptr;
   struct shmid_ds buf;
   DBUG_ENTER("my_large_malloc_int");
 
   /* Align block size to my_large_page_size */
   size = ((size - 1) & ~(my_large_page_size - 1)) + my_large_page_size;
   
-  shmid = shmget(IPC_PRIVATE, (size_t)size, SHM_HUGETLB | SHM_R | SHM_W);
+  shmid = shmget(IPC_PRIVATE, size, SHM_HUGETLB | SHM_R | SHM_W);
   if (shmid < 0)
   {
     if (my_flags & MY_WME)
       fprintf(stderr,
-              "Warning: Failed to allocate %d bytes from HugeTLB memory."
-              " errno %d\n", size, errno);
+              "Warning: Failed to allocate %lu bytesx from HugeTLB memory."
+              " errno %d\n", (ulong) size, errno);
 
     DBUG_RETURN(NULL);
   }
 
-  ptr = shmat(shmid, NULL, 0);
-  if (ptr == (void *)-1)
+  ptr = (uchar*) shmat(shmid, NULL, 0);
+  if (ptr == (uchar *) -1)
   {
     if (my_flags& MY_WME)
       fprintf(stderr, "Warning: Failed to attach shared memory segment,"
@@ -156,7 +156,7 @@ gptr my_large_malloc_int(uint size, myf 
 
 /* Linux-specific large pages deallocator */
 
-my_bool my_large_free_int(byte *ptr, myf my_flags __attribute__((unused)))
+my_bool my_large_free_int(uchar *ptr, myf my_flags __attribute__((unused)))
 {
   DBUG_ENTER("my_large_free_int");
   DBUG_RETURN(shmdt(ptr) == 0);
diff -Nrup a/mysys/my_lockmem.c b/mysys/my_lockmem.c
--- a/mysys/my_lockmem.c	2006-12-23 22:04:07 +03:00
+++ b/mysys/my_lockmem.c	2007-08-29 17:13:19 +04:00
@@ -25,17 +25,17 @@
 struct st_mem_list
 {
   LIST list;
-  byte *page;
+  uchar *page;
   uint size;
 };
 
 LIST *mem_list;
 
-byte *my_malloc_lock(uint size,myf MyFlags)
+uchar *my_malloc_lock(uint size,myf MyFlags)
 {
   int success;
   uint pagesize=sysconf(_SC_PAGESIZE);
-  byte *ptr;
+  uchar *ptr;
   struct st_mem_list *element;
   DBUG_ENTER("my_malloc_lock");
 
@@ -46,7 +46,7 @@ byte *my_malloc_lock(uint size,myf MyFla
       my_error(EE_OUTOFMEMORY, MYF(ME_BELL+ME_WAITTANG),size);
     DBUG_RETURN(0);
   }
-  success = mlock((byte*) ptr,size);
+  success = mlock((uchar*) ptr,size);
   if (success != 0 && geteuid() == 0)
   {
     DBUG_PRINT("warning",("Failed to lock memory. errno %d\n",
@@ -59,11 +59,11 @@ byte *my_malloc_lock(uint size,myf MyFla
     /* Add block in a list for munlock */
     if (!(element=(struct st_mem_list*) my_malloc(sizeof(*element),MyFlags)))
     {
-      VOID(munlock((byte*) ptr,size));
+      VOID(munlock((uchar*) ptr,size));
       free(ptr);
       DBUG_RETURN(0);
     }
-    element->list.data=(byte*) element;
+    element->list.data=(uchar*) element;
     element->page=ptr;
     element->size=size;
     pthread_mutex_lock(&THR_LOCK_malloc);
@@ -74,7 +74,7 @@ byte *my_malloc_lock(uint size,myf MyFla
 }
 
 
-void my_free_lock(byte *ptr,myf Myflags __attribute__((unused)))
+void my_free_lock(uchar *ptr,myf Myflags __attribute__((unused)))
 {
   LIST *list;
   struct st_mem_list *element=0;
@@ -85,14 +85,14 @@ void my_free_lock(byte *ptr,myf Myflags 
     element=(struct st_mem_list*) list->data;
     if (ptr == element->page)
     {						/* Found locked mem */
-      VOID(munlock((byte*) ptr,element->size));
+      VOID(munlock((uchar*) ptr,element->size));
       mem_list=list_delete(mem_list,list);
       break;
     }
   }
   pthread_mutex_unlock(&THR_LOCK_malloc);
   if (element)
-    my_free((gptr) element,MYF(0));
+    my_free((uchar*) element,MYF(0));
   free(ptr);					/* Free even if not locked */
 }
 
diff -Nrup a/mysys/my_malloc.c b/mysys/my_malloc.c
--- a/mysys/my_malloc.c	2007-04-12 13:46:05 +04:00
+++ b/mysys/my_malloc.c	2007-08-29 17:13:19 +04:00
@@ -23,11 +23,11 @@
 
 	/* My memory allocator */
 
-gptr my_malloc(unsigned int size, myf my_flags)
+void *my_malloc(size_t size, myf my_flags)
 {
-  gptr point;
+  void* point;
   DBUG_ENTER("my_malloc");
-  DBUG_PRINT("my",("size: %u  my_flags: %d",size, my_flags));
+  DBUG_PRINT("my",("size: %lu  my_flags: %d", (ulong) size, my_flags));
 
   if (!size)
     size=1;					/* Safety */
@@ -44,14 +44,14 @@ gptr my_malloc(unsigned int size, myf my
   else if (my_flags & MY_ZEROFILL)
     bzero(point,size);
   DBUG_PRINT("exit",("ptr: 0x%lx", (long) point));
-  DBUG_RETURN(point);
+  DBUG_RETURN((void*) point);
 } /* my_malloc */
 
 
 	/* Free memory allocated with my_malloc */
 	/*ARGSUSED*/
 
-void my_no_flags_free(gptr ptr)
+void my_no_flags_free(void* ptr)
 {
   DBUG_ENTER("my_free");
   DBUG_PRINT("my",("ptr: 0x%lx", (long) ptr));
@@ -63,32 +63,32 @@ void my_no_flags_free(gptr ptr)
 
 	/* malloc and copy */
 
-gptr my_memdup(const byte *from, uint length, myf my_flags)
+void* my_memdup(const void *from, size_t length, myf my_flags)
 {
-  gptr ptr;
-  if ((ptr=my_malloc(length,my_flags)) != 0)
-    memcpy((byte*) ptr, (byte*) from,(size_t) length);
+  void *ptr;
+  if ((ptr= my_malloc(length,my_flags)) != 0)
+    memcpy(ptr, from, length);
   return(ptr);
 }
 
 
 char *my_strdup(const char *from, myf my_flags)
 {
-  gptr ptr;
-  uint length=(uint) strlen(from)+1;
-  if ((ptr=my_malloc(length,my_flags)) != 0)
-    memcpy((byte*) ptr, (byte*) from,(size_t) length);
-  return((my_string) ptr);
+  char *ptr;
+  size_t length= strlen(from)+1;
+  if ((ptr= (char*) my_malloc(length, my_flags)))
+    memcpy((uchar*) ptr, (uchar*) from,(size_t) length);
+  return(ptr);
 }
 
 
-char *my_strdup_with_length(const char *from, uint length, myf my_flags)
+char *my_strndup(const char *from, size_t length, myf my_flags)
 {
-  gptr ptr;
-  if ((ptr=my_malloc(length+1,my_flags)) != 0)
+  char *ptr;
+  if ((ptr= (char*) my_malloc(length+1,my_flags)) != 0)
   {
-    memcpy((byte*) ptr, (byte*) from,(size_t) length);
-    ((char*) ptr)[length]=0;
+    memcpy((uchar*) ptr, (uchar*) from, length);
+    ptr[length]=0;
   }
   return((char*) ptr);
 }
diff -Nrup a/mysys/my_static.c b/mysys/my_static.c
--- a/mysys/my_static.c	2007-04-12 13:46:05 +04:00
+++ b/mysys/my_static.c	2007-08-29 17:13:19 +04:00
@@ -77,8 +77,8 @@ uint sf_malloc_prehunc=0,		/* If you hav
 ulong sf_malloc_cur_memory= 0L;		/* Current memory usage */
 ulong sf_malloc_max_memory= 0L;		/* Maximum memory usage */
 uint  sf_malloc_count= 0;		/* Number of times NEW() was called */
-byte *sf_min_adress= (byte*) ~(unsigned long) 0L,
-     *sf_max_adress= (byte*) 0L;
+uchar *sf_min_adress= (uchar*) ~(unsigned long) 0L,
+     *sf_max_adress= (uchar*) 0L;
 /* Root of the linked list of struct st_irem */
 struct st_irem *sf_malloc_root = NULL;
 
diff -Nrup a/mysys/my_static.h b/mysys/my_static.h
--- a/mysys/my_static.h	2007-03-23 13:01:47 +03:00
+++ b/mysys/my_static.h	2007-08-29 17:13:19 +04:00
@@ -60,7 +60,7 @@ extern const char *soundex_map;
 extern USED_MEM* my_once_root_block;
 extern uint	 my_once_extra;
 
-extern byte	*sf_min_adress,*sf_max_adress;
+extern uchar	*sf_min_adress,*sf_max_adress;
 extern uint	sf_malloc_count;
 extern struct st_irem *sf_malloc_root;
 
diff -Nrup a/mysys/safemalloc.c b/mysys/safemalloc.c
--- a/mysys/safemalloc.c	2007-04-12 13:46:05 +04:00
+++ b/mysys/safemalloc.c	2007-08-29 17:13:19 +04:00
@@ -51,7 +51,7 @@
 				(equivalent to realloc())
 	FREE( pPtr )		Free memory allocated by NEW
 				(equivalent to free())
-	TERMINATE(file)		End system, report errors and stats on file
+	TERMINATE(file,flag)	End system, report errors and stats on file
   I personally use two more functions, but have not included them here:
 	char *STRSAVE( sPtr )	Save a copy of the string in dynamic memory
 	char *RENEW( pPtr, uSize )
@@ -82,7 +82,7 @@ static int sf_malloc_tampered= 0;
 
 	/* Static functions prototypes */
 
-static int check_ptr(const char *where, byte *ptr, const char *sFile,
+static int check_ptr(const char *where, uchar *ptr, const char *sFile,
 		     uint uLine);
 static int _checkchunk(struct st_irem *pRec, const char *sFile, uint uLine);
 
@@ -119,12 +119,12 @@ static int _checkchunk(struct st_irem *p
 
 /* Allocate some memory. */
 
-gptr _mymalloc(uint size, const char *filename, uint lineno, myf MyFlags)
+void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags)
 {
   struct st_irem *irem;
-  char *data;
+  uchar *data;
   DBUG_ENTER("_mymalloc");
-  DBUG_PRINT("enter",("Size: %u",size));
+  DBUG_PRINT("enter",("Size: %lu", (ulong) size));
 
   if (!sf_malloc_quick)
     (void) _sanity (filename, lineno);
@@ -151,8 +151,8 @@ gptr _mymalloc(uint size, const char *fi
       my_errno=errno;
       sprintf(buff,"Out of memory at line %d, '%s'", lineno, filename);
       my_message(EE_OUTOFMEMORY, buff, MYF(ME_BELL+ME_WAITTANG+ME_NOREFRESH));
-      sprintf(buff,"needed %d byte (%ldk), memory in use: %ld bytes (%ldk)",
-	      size, (size + 1023L) / 1024L,
+      sprintf(buff,"needed %u byte (%ldk), memory in use: %ld bytes (%ldk)",
+	      (uint) size, (uint) (size + 1023L) / 1024L,
 	      sf_malloc_max_memory, (sf_malloc_max_memory + 1023L) / 1024L);
       my_message(EE_OUTOFMEMORY, buff, MYF(ME_BELL+ME_WAITTANG+ME_NOREFRESH));
     }
@@ -160,18 +160,18 @@ gptr _mymalloc(uint size, const char *fi
 			sf_malloc_max_memory,lineno, filename));
     if (MyFlags & MY_FAE)
       exit(1);
-    DBUG_RETURN ((gptr) 0);
+    DBUG_RETURN ((void*) 0);
   }
 
   /* Fill up the structure */
-  data= (((char*) irem) + ALIGN_SIZE(sizeof(struct st_irem)) +
+  data= (((uchar*) irem) + ALIGN_SIZE(sizeof(struct st_irem)) +
 	 sf_malloc_prehunc);
   *((uint32*) (data-sizeof(uint32)))= MAGICKEY;
   data[size + 0]= MAGICEND0;
   data[size + 1]= MAGICEND1;
   data[size + 2]= MAGICEND2;
   data[size + 3]= MAGICEND3;
-  irem->filename= (my_string) filename;
+  irem->filename= (char *) filename;
   irem->linenum= lineno;
   irem->datasize= size;
   irem->prev=	  NULL;
@@ -198,7 +198,7 @@ gptr _mymalloc(uint size, const char *fi
     sf_min_adress= data;
   if (sf_max_adress < data)
     sf_max_adress= data;
-  DBUG_RETURN ((gptr) data);
+  DBUG_RETURN((void*) data);
 }
 
 
@@ -207,8 +207,8 @@ gptr _mymalloc(uint size, const char *fi
   Free then old memoryblock
 */
 
-gptr _myrealloc(register gptr ptr, register uint size,
-		const char *filename, uint lineno, myf MyFlags)
+void *_myrealloc(register void *ptr, register size_t size,
+                 const char *filename, uint lineno, myf MyFlags)
 {
   struct st_irem *irem;
   char *data;
@@ -220,8 +220,8 @@ gptr _myrealloc(register gptr ptr, regis
   if (!sf_malloc_quick)
     (void) _sanity (filename, lineno);
 
-  if (check_ptr("Reallocating", (byte*) ptr, filename, lineno))
-    DBUG_RETURN((gptr) NULL);
+  if (check_ptr("Reallocating", (uchar*) ptr, filename, lineno))
+    DBUG_RETURN((uchar*) NULL);
 
   irem= (struct st_irem *) (((char*) ptr) - ALIGN_SIZE(sizeof(struct st_irem))-
 			    sf_malloc_prehunc);
@@ -232,13 +232,13 @@ gptr _myrealloc(register gptr ptr, regis
     DBUG_PRINT("safe",("Reallocating unallocated data at line %d, '%s'",
 		       lineno, filename));
     (void) fflush(stderr);
-    DBUG_RETURN((gptr) NULL);
+    DBUG_RETURN((uchar*) NULL);
   }
 
   if ((data= _mymalloc(size,filename,lineno,MyFlags))) /* Allocate new area */
   {
     size=min(size, irem->datasize);		/* Move as much as possibly */
-    memcpy((byte*) data, ptr, (size_t) size);	/* Copy old data */
+    memcpy((uchar*) data, ptr, (size_t) size);	/* Copy old data */
     _myfree(ptr, filename, lineno, 0);		/* Free not needed area */
   }
   else
@@ -254,7 +254,7 @@ gptr _myrealloc(register gptr ptr, regis
 
 /* Deallocate some memory. */
 
-void _myfree(gptr ptr, const char *filename, uint lineno, myf myflags)
+void _myfree(void *ptr, const char *filename, uint lineno, myf myflags)
 {
   struct st_irem *irem;
   DBUG_ENTER("_myfree");
@@ -264,7 +264,7 @@ void _myfree(gptr ptr, const char *filen
     (void) _sanity (filename, lineno);
 
   if ((!ptr && (myflags & MY_ALLOW_ZERO_PTR)) ||
-      check_ptr("Freeing",(byte*) ptr,filename,lineno))
+      check_ptr("Freeing",(uchar*) ptr,filename,lineno))
     DBUG_VOID_RETURN;
 
   /* Calculate the address of the remember structure */
@@ -316,7 +316,7 @@ void _myfree(gptr ptr, const char *filen
 
 	/* Check if we have a wrong  pointer */
 
-static int check_ptr(const char *where, byte *ptr, const char *filename,
+static int check_ptr(const char *where, uchar *ptr, const char *filename,
 		     uint lineno)
 {
   if (!ptr)
@@ -352,12 +352,15 @@ static int check_ptr(const char *where, 
 
 
 /*
-  TERMINATE(FILE *file)
-    Report on all the memory pieces that have not been
-    free'ed as well as the statistics.
+  Report on all the memory pieces that have not been free'ed
+
+  SYNOPSIS
+    TERMINATE()
+    file   Write output to this file
+    flag   If <> 0, also write statistics 
  */
 
-void TERMINATE(FILE *file)
+void TERMINATE(FILE *file, uint flag)
 {
   struct st_irem *irem;
   DBUG_ENTER("TERMINATE");
@@ -373,8 +376,7 @@ void TERMINATE(FILE *file)
   {
     if (file)
     {
-      fprintf(file, "Warning: Not freed memory segments: %u\n",
-	      sf_malloc_count);
+      fprintf(file, "Warning: Not freed memory segments: %u\n", sf_malloc_count);
       (void) fflush(file);
     }
     DBUG_PRINT("safe",("sf_malloc_count: %u", sf_malloc_count));
@@ -414,7 +416,7 @@ void TERMINATE(FILE *file)
     }
   }
   /* Report the memory usage statistics */
-  if (file)
+  if (file && flag)
   {
     fprintf(file, "Maximum memory usage: %ld bytes (%ldk)\n",
 	    sf_malloc_max_memory, (sf_malloc_max_memory + 1023L) / 1024L);
@@ -503,12 +505,12 @@ int _sanity(const char *filename, uint l
 
 	/* malloc and copy */
 
-gptr _my_memdup(const byte *from, uint length, const char *filename,
-		uint lineno, myf MyFlags)
+void *_my_memdup(const void *from, size_t length, const char *filename,
+                  uint lineno, myf MyFlags)
 {
-  gptr ptr;
-  if ((ptr=_mymalloc(length,filename,lineno,MyFlags)) != 0)
-    memcpy((byte*) ptr, (byte*) from,(size_t) length);
+  void *ptr;
+  if ((ptr= _mymalloc(length,filename,lineno,MyFlags)) != 0)
+    memcpy(ptr, from, length);
   return(ptr);
 } /*_my_memdup */
 
@@ -516,23 +518,23 @@ gptr _my_memdup(const byte *from, uint l
 char *_my_strdup(const char *from, const char *filename, uint lineno,
 		 myf MyFlags)
 {
-  gptr ptr;
-  uint length=(uint) strlen(from)+1;
-  if ((ptr=_mymalloc(length,filename,lineno,MyFlags)) != 0)
-    memcpy((byte*) ptr, (byte*) from,(size_t) length);
-  return((char*) ptr);
+  char *ptr;
+  size_t length= strlen(from)+1;
+  if ((ptr= (char*) _mymalloc(length,filename,lineno,MyFlags)) != 0)
+    memcpy((uchar*) ptr, (uchar*) from, (size_t) length);
+  return(ptr);
 } /* _my_strdup */
 
 
-char *_my_strdup_with_length(const char *from, uint length,
-			     const char *filename, uint lineno,
-			     myf MyFlags)
+char *_my_strndup(const char *from, size_t length,
+                  const char *filename, uint lineno,
+                  myf MyFlags)
 {
-  gptr ptr;
-  if ((ptr=_mymalloc(length+1,filename,lineno,MyFlags)) != 0)
+  char *ptr;
+  if ((ptr= (char*) _mymalloc(length+1,filename,lineno,MyFlags)) != 0)
   {
-    memcpy((byte*) ptr, (byte*) from,(size_t) length);
+    memcpy((uchar*) ptr, (uchar*) from, (size_t) length);
     ptr[length]=0;
   }
-  return((char *) ptr);
+  return(ptr);
 }
Thread
bk commit into 5.0 tree (kaa:1.2512) BUG#5731Alexey Kopytov29 Aug