diff --git a/src/dap_common.c b/src/dap_common.c
index 5dce0cf0638714c8e75a9d2801ac8879ccbad473..23744765b8c9c4d32b7a3db010a775b40e98f7aa 100755
--- a/src/dap_common.c
+++ b/src/dap_common.c
@@ -551,7 +551,10 @@ char *dap_log_get_item( time_t a_time, int a_limit )
 
 static void  *log_thread_proc( void *arg )
 {
-    int32_t l_outlogstrs = 0, tmp, n;
+    int32_t l_outlogstrs = 0, n;
+    #ifdef _WIN32
+    int32_t tmp;
+    #endif
     dap_log_str_t *l_logstr;
 
     while ( !s_log_term_signal ) {
@@ -741,8 +744,9 @@ void _log_it2( const char *log_tag, enum dap_log_level ll, const char *fmt,... )
   memcpy( buf0, s_ansi_seq_color[ll], s_ansi_seq_color_len[ll] );
   time_offset = s_ansi_seq_color_len[ll];
 
-  struct tm *tmptime = localtime( &t );
-  len = strftime( (char *)(buf0 + time_offset), 65536, "[%x-%X]", tmptime );
+  struct tm l_tmptime={0};
+  localtime_r( &t, &l_tmptime );
+  len = strftime( (char *)(buf0 + time_offset), 65536, "[%x-%X]", &l_tmptime );
   tag_offset = time_offset + len;
 
   memcpy( buf0 + tag_offset, log_level_tag[ll], 8 );