From 6462c98028380d5a74de9a794dfed2f894128436 Mon Sep 17 00:00:00 2001
From: "monty@hundin.mysql.fi" <>
Date: Wed, 3 Apr 2002 00:31:40 +0300
Subject: [PATCH] Make safemalloc work without threads

---
 mysys/my_static.h  |  6 +++++-
 mysys/safemalloc.c | 32 ++++++++++++++++++++++----------
 2 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/mysys/my_static.h b/mysys/my_static.h
index 88faf24ce82..2483c507e49 100644
--- a/mysys/my_static.h
+++ b/mysys/my_static.h
@@ -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;
diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c
index 062f9b9db02..925abd920ec 100644
--- a/mysys/safemalloc.c
+++ b/mysys/safemalloc.c
@@ -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))
   {
-- 
2.30.9