]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: output.adb: fix newline being inserted when buffer is full
authorGhjuvan Lacambre <lacambre@adacore.com>
Thu, 8 Dec 2022 08:58:28 +0000 (09:58 +0100)
committerMarc Poulhiès <poulhies@adacore.com>
Tue, 3 Jan 2023 09:29:54 +0000 (10:29 +0100)
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.

gcc/ada/output.adb

index 33d027ded8e38ad6c23a29af56266454fd4b6b70..497643d17ecc87d9682514c6d616ace5ef464841 100644 (file)
@@ -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;