For some reason, fatal_buf doesn't have a NUL under certain circumstances on my Mac...
authorChris Hanson <org/chris-hanson/cph>
Sun, 20 Mar 2011 09:25:38 +0000 (02:25 -0700)
committerChris Hanson <org/chris-hanson/cph>
Sun, 20 Mar 2011 09:25:38 +0000 (02:25 -0700)
src/microcode/outf.c

index 1daa0b1eaf279e92c517bbc48fe9da375b27a78f..c8ffeffb7ee7015c88083940722bf5e9a524722b 100644 (file)
@@ -168,10 +168,22 @@ outf_flush_error (void)
     fflush (stderr);
 }
 
+static unsigned int
+find_fatal_buf_nul (void)
+{
+  unsigned int scan = 0;
+  while (scan < MAX_FATAL_BUF)
+    if ((fatal_buf[scan++]) == '\0')
+      return (scan - 1);
+  /* There's no NUL character in the buffer. */
+  (fatal_buf[0]) = '\0';
+  return (0);
+}
+
 void
 voutf_fatal (const char * format, va_list args)
 {
-  unsigned int end = (strlen (fatal_buf));
+  unsigned int end = (find_fatal_buf_nul ());
   VSNPRINTF ((& (fatal_buf[end])), (MAX_FATAL_BUF - end), format, args);
 }