瀏覽代碼

Makefile: Print all color escape sequences before newline

Ensure that the escape sequences do not leak across lines.
Brad King 10 年之前
父節點
當前提交
c6ada8275b
共有 1 個文件被更改,包括 9 次插入3 次删除
  1. 9 3
      Source/cmSystemTools.cxx

+ 9 - 3
Source/cmSystemTools.cxx

@@ -2304,13 +2304,19 @@ void cmSystemTools::MakefileColorEcho(int color, const char* message,
 
   if(enabled)
     {
-    cmsysTerminal_cfprintf(color | assumeTTY, stdout, "%s%s",
-                           message, newline? "\n" : "");
+    // Print with color.  Delay the newline until later so that
+    // all color restore sequences appear before it.
+    cmsysTerminal_cfprintf(color | assumeTTY, stdout, "%s", message);
     }
   else
     {
     // Color is disabled.  Print without color.
-    fprintf(stdout, "%s%s", message, newline? "\n" : "");
+    fprintf(stdout, "%s", message);
+    }
+
+  if(newline)
+    {
+    fprintf(stdout, "\n");
     }
 }