[Ada] Single character argument in call to Quote_Argument raises error
authorJustin Squirek <squirek@adacore.com>
Thu, 26 May 2022 15:15:46 +0000 (15:15 +0000)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 4 Jul 2022 07:45:56 +0000 (07:45 +0000)
This patch corrects an issue in the compiler whereby calling
Quote_Argument with an argument that is of size 1 may lead to a
CONSTRAINT_ERROR raised at runtime due to an undersized buffer.

gcc/ada/

* libgnat/s-os_lib.adb (Quote_Argument): Modify the result
buffer size calculation to handle the case where Arg'Length is
1.

gcc/ada/libgnat/s-os_lib.adb

index 5af6586..53dfbf9 100644 (file)
@@ -1940,7 +1940,7 @@ package body System.OS_Lib is
       procedure Quote_Argument (Arg : in out String_Access) is
          J            : Positive := 1;
          Quote_Needed : Boolean  := False;
-         Res          : String (1 .. Arg'Length * 2);
+         Res          : String (1 .. Arg'Length * 2 + 2);
 
       begin
          if Arg (Arg'First) /= '"' or else Arg (Arg'Last) /= '"' then