[Ada] Fix uninitialized out parameter in s-regpat.adb
authorArnaud Charlet <charlet@adacore.com>
Wed, 18 Dec 2019 07:16:17 +0000 (07:16 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 18 Dec 2019 07:16:17 +0000 (07:16 +0000)
2019-12-18  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnat/s-regpat.adb (Parse_Literal, Parse_Piece): Ensure
Expr_Flags is always fully initialized.

From-SVN: r279517

gcc/ada/ChangeLog
gcc/ada/libgnat/s-regpat.adb

index 7573752..465f5a9 100644 (file)
@@ -1,5 +1,10 @@
 2019-12-18  Arnaud Charlet  <charlet@adacore.com>
 
+       * libgnat/s-regpat.adb (Parse_Literal, Parse_Piece): Ensure
+       Expr_Flags is always fully initialized.
+
+2019-12-18  Arnaud Charlet  <charlet@adacore.com>
+
        * libgnat/s-atopar.ads, libgnat/s-atopex.ads (Atomic_Type): Can
        now be marked Atomic. This requires marking the unit Ada 202x.
 
index d7f59c7..ae69f47 100644 (file)
@@ -1558,7 +1558,8 @@ package body System.Regpat is
          Has_Special_Operator : Boolean := False;
 
       begin
-         Parse_Pos := Parse_Pos - 1;      --  Look at current character
+         Expr_Flags := Worst_Expression;  --  Ensure Expr_Flags is initialized
+         Parse_Pos  := Parse_Pos - 1;     --  Look at current character
 
          IP :=
            Emit_Node
@@ -1684,11 +1685,8 @@ package body System.Regpat is
       begin
          Parse_Atom (New_Flags, IP);
 
-         if IP = 0 then
-            return;
-         end if;
-
-         if Parse_Pos > Parse_End
+         if IP = 0
+           or else Parse_Pos > Parse_End
            or else not Is_Mult (Parse_Pos)
          then
             Expr_Flags := New_Flags;