From: Ghjuvan Lacambre <lacam...@adacore.com>

Before this commit, when GNAT needed to emit lines longer than
the buffer, it accidentally inserted a newline in its output when
attempting to flush its buffer.

We fix this by using Flush_Buffer instead of Write_Eol in Write_Char.

gcc/ada/

        * output.adb (Write_Buffer): Use Flush_Buffer instead of Write_Eol.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/output.adb | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/ada/output.adb b/gcc/ada/output.adb
index 33d027ded8e..497643d17ec 100644
--- a/gcc/ada/output.adb
+++ b/gcc/ada/output.adb
@@ -422,10 +422,10 @@ package body Output is
 
    procedure Write_Char (C : Character) is
    begin
-      pragma Assert (Next_Col in Buffer'Range);
-      if Next_Col = Buffer'Length then
-         Write_Eol;
+      if Next_Col > Buffer'Length then
+         Flush_Buffer;
       end if;
+      pragma Assert (Next_Col in Buffer'Range);
 
       if C = ASCII.LF then
          Write_Eol;
-- 
2.34.1

Reply via email to