Stop debug+timestamp using the common timestamp buffer, because it can
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 14 Nov 2005 10:46:27 +0000 (10:46 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 14 Nov 2005 10:46:27 +0000 (10:46 +0000)
interfere with data that's already in there.

doc/doc-txt/ChangeLog
src/src/debug.c

index a938e2643a1cb160185aff8f2204b5b30b28623c..9bb25b1824178b77fdbb754300f9abfe7a182dea 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.254 2005/11/11 10:02:04 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.255 2005/11/14 10:46:27 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -64,6 +64,11 @@ PH/06 When a client host used a correct literal IP address in a HELO or EHLO
       if it matched the actual IP address. This has been tidied up so that it
       doesn't show the same IP address twice.
 
       if it matched the actual IP address. This has been tidied up so that it
       doesn't show the same IP address twice.
 
+PH/07 When both +timestamp and +memory debugging was on, the value given by
+      $tod_xxx expansions could be wrong, because the tod_stamp() function was
+      called by the debug printing, thereby overwriting the timestamp buffer.
+      Debugging no longer uses the tod_stamp() function when +timestamp is set.
+
 
 Exim version 4.54
 -----------------
 
 Exim version 4.54
 -----------------
index e3d43641bf7f9851b9089a53265612a0f40c1a0f..59345d210209b679552ba57353a83ec6a78f565e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/debug.c,v 1.3 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/src/src/debug.c,v 1.4 2005/11/14 10:46:27 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -161,14 +161,19 @@ debug_vprintf(char *format, va_list ap)
 {
 if (debug_file == NULL) return;
 
 {
 if (debug_file == NULL) return;
 
-/* Various things can be inserted at the start of a line. */
+/* Various things can be inserted at the start of a line. Don't use the
+tod_stamp() function for the timestamp, because that will overwrite the
+timestamp buffer, which may contain something useful. (This was a bug fix: the
++memory debugging with +timestamp did cause a problem.) */
 
 if (debug_ptr == debug_buffer)
   {
   DEBUG(D_timestamp)
     {
 
 if (debug_ptr == debug_buffer)
   {
   DEBUG(D_timestamp)
     {
-    uschar *ts = tod_stamp(tod_log_bare);
-    sprintf(CS debug_ptr, "%s ", ts + 11);
+    time_t now = time(NULL);
+    struct tm *t = timestamps_utc? gmtime(&now) : localtime(&now);
+    (void) sprintf(CS debug_ptr, "%02d:%02d:%02d ", t->tm_hour, t->tm_min,
+      t->tm_sec);
     while(*debug_ptr != 0) debug_ptr++;
     }
 
     while(*debug_ptr != 0) debug_ptr++;
     }