Commit 1f38c3a9 authored by unknown's avatar unknown

Merge work:/home/bk/mysql-4.0 into hundin.mysql.fi:/my/bk/mysql-4.0

parents 8f92cd03 8675a273
...@@ -38,7 +38,9 @@ struct irem { ...@@ -38,7 +38,9 @@ struct irem {
my_string _sFileName; /* File in which memory was new'ed */ my_string _sFileName; /* File in which memory was new'ed */
uint _uLineNum; /* Line number in above file */ uint _uLineNum; /* Line number in above file */
uint _uDataSize; /* Size requested */ uint _uDataSize; /* Size requested */
#ifdef THREAD
pthread_t thread_id; pthread_t thread_id;
#endif
long _lSpecialValue; /* Underrun marker value */ long _lSpecialValue; /* Underrun marker value */
}; };
...@@ -57,11 +59,13 @@ extern const char *soundex_map; ...@@ -57,11 +59,13 @@ extern const char *soundex_map;
extern USED_MEM* my_once_root_block; extern USED_MEM* my_once_root_block;
extern uint my_once_extra; extern uint my_once_extra;
#ifdef THREAD
/* /*
These threads are exept from safemalloc leak scrutiny unless These threads are except from safemalloc leak scrutiny unless
PEDANTIC_SAFEMALLOC is defined PEDANTIC_SAFEMALLOC is defined
*/ */
extern pthread_t signal_thread, kill_thread; extern pthread_t signal_thread, kill_thread;
#endif
#ifndef HAVE_TEMPNAM #ifndef HAVE_TEMPNAM
extern int _my_tempnam_used; extern int _my_tempnam_used;
......
...@@ -185,7 +185,9 @@ gptr _mymalloc (uint uSize, const char *sFile, uint uLine, myf MyFlags) ...@@ -185,7 +185,9 @@ gptr _mymalloc (uint uSize, const char *sFile, uint uLine, myf MyFlags)
pTmp -> sFileName = (my_string) sFile; pTmp -> sFileName = (my_string) sFile;
pTmp -> uLineNum = uLine; pTmp -> uLineNum = uLine;
pTmp -> uDataSize = uSize; pTmp -> uDataSize = uSize;
#ifdef THREAD
pTmp->thread_id = pthread_self(); pTmp->thread_id = pthread_self();
#endif
pTmp -> pPrev = NULL; pTmp -> pPrev = NULL;
/* Add this remember structure to the linked list */ /* Add this remember structure to the linked list */
...@@ -371,12 +373,19 @@ static int check_ptr(const char *where, byte *ptr, const char *sFile, ...@@ -371,12 +373,19 @@ static int check_ptr(const char *where, byte *ptr, const char *sFile,
return 0; return 0;
} }
#ifdef THREAD
static int legal_leak(struct remember* pPtr) static int legal_leak(struct remember* pPtr)
{ {
return pthread_self() == pPtr->thread_id || main_th == pPtr->thread_id return pthread_self() == pPtr->thread_id || main_th == pPtr->thread_id
|| shutdown_th == pPtr->thread_id || shutdown_th == pPtr->thread_id
|| signal_th == pPtr->thread_id; || signal_th == pPtr->thread_id;
} }
#else
static int legal_leak(struct remember* pPtr)
{
return 1;
}
#endif
/* /*
* TERMINATE(FILE *file) * TERMINATE(FILE *file)
...@@ -390,12 +399,15 @@ void TERMINATE (FILE *file) ...@@ -390,12 +399,15 @@ void TERMINATE (FILE *file)
DBUG_ENTER("TERMINATE"); DBUG_ENTER("TERMINATE");
pthread_mutex_lock(&THR_LOCK_malloc); pthread_mutex_lock(&THR_LOCK_malloc);
/* Report the difference between number of calls to */ /*
/* NEW and the number of calls to FREE. >0 means more */ Report the difference between number of calls to
/* NEWs than FREEs. <0, etc. */ NEW and the number of calls to FREE. >0 means more
NEWs than FREEs. <0, etc.
*/
#ifndef PEDANTIC_SAFEMALLOC #if !defined(PEDANTIC_SAFEMALLOC) && defined(THREAD)
/* Avoid false alarms for blocks that we cannot free before my_end() /*
Avoid false alarms for blocks that we cannot free before my_end()
This does miss some positives, but that is ok. This will only miss This does miss some positives, but that is ok. This will only miss
failures to free things allocated in the main thread which failures to free things allocated in the main thread which
performs only one-time allocations. If you really need to performs only one-time allocations. If you really need to
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment