Commit 4cae9fe9 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

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

parents ed4d6a73 6462c980
......@@ -38,7 +38,9 @@ struct irem {
my_string _sFileName; /* File in which memory was new'ed */
uint _uLineNum; /* Line number in above file */
uint _uDataSize; /* Size requested */
#ifdef THREAD
pthread_t thread_id;
#endif
long _lSpecialValue; /* Underrun marker value */
};
......@@ -57,11 +59,13 @@ extern const char *soundex_map;
extern USED_MEM* my_once_root_block;
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
*/
extern pthread_t signal_thread, kill_thread;
#endif
#ifndef HAVE_TEMPNAM
extern int _my_tempnam_used;
......
......@@ -185,7 +185,9 @@ gptr _mymalloc (uint uSize, const char *sFile, uint uLine, myf MyFlags)
pTmp -> sFileName = (my_string) sFile;
pTmp -> uLineNum = uLine;
pTmp -> uDataSize = uSize;
#ifdef THREAD
pTmp->thread_id = pthread_self();
#endif
pTmp -> pPrev = NULL;
/* Add this remember structure to the linked list */
......@@ -371,12 +373,19 @@ static int check_ptr(const char *where, byte *ptr, const char *sFile,
return 0;
}
#ifdef THREAD
static int legal_leak(struct remember* pPtr)
{
return pthread_self() == pPtr->thread_id || main_th == pPtr->thread_id
|| shutdown_th == pPtr->thread_id
|| signal_th == pPtr->thread_id;
}
#else
static int legal_leak(struct remember* pPtr)
{
return 1;
}
#endif
/*
* TERMINATE(FILE *file)
......@@ -390,17 +399,20 @@ void TERMINATE (FILE *file)
DBUG_ENTER("TERMINATE");
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 */
/* NEWs than FREEs. <0, etc. */
/*
Report the difference between number of calls to
NEW and the number of calls to FREE. >0 means more
NEWs than FREEs. <0, etc.
*/
#ifndef PEDANTIC_SAFEMALLOC
/* 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
failures to free things allocated in the main thread which
performs only one-time allocations. If you really need to
debug memory allocations in the main thread,
#define PEDANTIC_SAFEMALLOC
#if !defined(PEDANTIC_SAFEMALLOC) && defined(THREAD)
/*
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
failures to free things allocated in the main thread which
performs only one-time allocations. If you really need to
debug memory allocations in the main thread,
#define PEDANTIC_SAFEMALLOC
*/
if ((pPtr=pRememberRoot))
{
......
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