[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 7573752b21adaa9264bff9e2efa066be1df170ed..465f5a9e8faf7883433af7a984ce177cbff83c4e 100644 (file)
@@ -1,3 +1,8 @@
+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
index d7f59c7e998f612da881a84bf736c8bcf682f7a5..ae69f4782799bdba61dffacd447237298a49bd22 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;