Commit 8675a273 authored by unknown's avatar unknown

Make safemalloc work without threads

parent 6a5c6b17
...@@ -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,17 +399,20 @@ void TERMINATE (FILE *file) ...@@ -390,17 +399,20 @@ 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() /*
This does miss some positives, but that is ok. This will only miss Avoid false alarms for blocks that we cannot free before my_end()
failures to free things allocated in the main thread which This does miss some positives, but that is ok. This will only miss
performs only one-time allocations. If you really need to failures to free things allocated in the main thread which
debug memory allocations in the main thread, performs only one-time allocations. If you really need to
#define PEDANTIC_SAFEMALLOC debug memory allocations in the main thread,
#define PEDANTIC_SAFEMALLOC
*/ */
if ((pPtr=pRememberRoot)) 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