Patchwork [Ada] Properly initialize value of global variable Unit_Casing before use

login
register
mail settings
Submitter Arnaud Charlet
Date April 24, 2013, 2:18 p.m.
Message ID <20130424141841.GA15091@adacore.com>
Download mbox | patch
Permalink /patch/239209/
State New
Headers show

Comments

Arnaud Charlet - April 24, 2013, 2:18 p.m.
In some cases, the value of global variable Unit_Casing could be read before
being initialized. This is now fixed.

Tested on x86_64-pc-linux-gnu, committed on trunk

2013-04-24  Yannick Moy  <moy@adacore.com>

	* repinfo.adb (List_Rep_Info): Set the value of Unit_Casing before
	calling subprograms which may read it.

Patch

Index: repinfo.adb
===================================================================
--- repinfo.adb	(revision 198221)
+++ repinfo.adb	(working copy)
@@ -114,7 +114,8 @@ 
       Table_Name           => "FE_Rep_Table");
 
    Unit_Casing : Casing_Type;
-   --  Identifier casing for current unit
+   --  Identifier casing for current unit. This is set by List_Rep_Info for
+   --  each unit, before calling subprograms which may read it.
 
    Need_Blank_Line : Boolean;
    --  Set True if a blank line is needed before outputting any information for
@@ -988,11 +989,11 @@ 
       then
          for U in Main_Unit .. Last_Unit loop
             if In_Extended_Main_Source_Unit (Cunit_Entity (U)) then
+               Unit_Casing := Identifier_Casing (Source_Index (U));
 
                --  Normal case, list to standard output
 
                if not List_Representation_Info_To_File then
-                  Unit_Casing := Identifier_Casing (Source_Index (U));
                   Write_Eol;
                   Write_Str ("Representation information for unit ");
                   Write_Unit_Name (Unit_Name (U));