Recommit wrongly reverted change.
authorArnaud Charlet <charlet@gcc.gnu.org>
Thu, 30 Oct 2014 11:45:47 +0000 (12:45 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 30 Oct 2014 11:45:47 +0000 (12:45 +0100)
From-SVN: r216923

gcc/ada/a-comutr.adb
gcc/ada/prj-proc.adb

index 01e7e1c809cbdf51ad0de256f8651b03ac96d18e..f45a27a1e0d9db592f1526e610f7be5950fc4310 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2004-2013, Free Software Foundation, Inc.         --
+--          Copyright (C) 2004-2014, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -272,7 +272,8 @@ package body Ada.Containers.Multiway_Trees is
       New_Item  : Element_Type;
       Count     : Count_Type := 1)
    is
-      First, Last : Tree_Node_Access;
+      First : Tree_Node_Access;
+      Last  : Tree_Node_Access;
 
    begin
       if Parent = No_Element then
@@ -297,7 +298,6 @@ package body Ada.Containers.Multiway_Trees is
                                    others  => <>);
 
       Last := First;
-
       for J in Count_Type'(2) .. Count loop
 
          --  Reclaim other nodes if Storage_Error.  ???
@@ -1171,7 +1171,8 @@ package body Ada.Containers.Multiway_Trees is
       Position  : out Cursor;
       Count     : Count_Type := 1)
    is
-      Last : Tree_Node_Access;
+      First : Tree_Node_Access;
+      Last  : Tree_Node_Access;
 
    begin
       if Parent = No_Element then
@@ -1202,13 +1203,11 @@ package body Ada.Containers.Multiway_Trees is
            with "attempt to tamper with cursors (tree is busy)";
       end if;
 
-      Position.Container := Parent.Container;
-      Position.Node := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Element => New_Item,
-                                           others  => <>);
-
-      Last := Position.Node;
+      First := new Tree_Node_Type'(Parent  => Parent.Node,
+                                   Element => New_Item,
+                                   others  => <>);
 
+      Last := First;
       for J in Count_Type'(2) .. Count loop
 
          --  Reclaim other nodes if Storage_Error.  ???
@@ -1222,7 +1221,7 @@ package body Ada.Containers.Multiway_Trees is
       end loop;
 
       Insert_Subtree_List
-        (First  => Position.Node,
+        (First  => First,
          Last   => Last,
          Parent => Parent.Node,
          Before => Before.Node);
@@ -1232,6 +1231,8 @@ package body Ada.Containers.Multiway_Trees is
       --  nodes we just inserted.
 
       Container.Count := Container.Count + Count;
+
+      Position := Cursor'(Parent.Container, First);
    end Insert_Child;
 
    procedure Insert_Child
@@ -1241,7 +1242,8 @@ package body Ada.Containers.Multiway_Trees is
       Position  : out Cursor;
       Count     : Count_Type := 1)
    is
-      Last : Tree_Node_Access;
+      First : Tree_Node_Access;
+      Last  : Tree_Node_Access;
 
    begin
       if Parent = No_Element then
@@ -1272,13 +1274,11 @@ package body Ada.Containers.Multiway_Trees is
            with "attempt to tamper with cursors (tree is busy)";
       end if;
 
-      Position.Container := Parent.Container;
-      Position.Node := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Element => <>,
-                                           others  => <>);
-
-      Last := Position.Node;
+      First := new Tree_Node_Type'(Parent  => Parent.Node,
+                                   Element => <>,
+                                   others  => <>);
 
+      Last := First;
       for J in Count_Type'(2) .. Count loop
 
          --  Reclaim other nodes if Storage_Error.  ???
@@ -1292,7 +1292,7 @@ package body Ada.Containers.Multiway_Trees is
       end loop;
 
       Insert_Subtree_List
-        (First  => Position.Node,
+        (First  => First,
          Last   => Last,
          Parent => Parent.Node,
          Before => Before.Node);
@@ -1302,6 +1302,8 @@ package body Ada.Containers.Multiway_Trees is
       --  nodes we just inserted.
 
       Container.Count := Container.Count + Count;
+
+      Position := Cursor'(Parent.Container, First);
    end Insert_Child;
 
    -------------------------
index bb07da9bdeaa9c0b26c9f331641144785a3166b1..9eb281468e43eae9c19cc7c6b5ea8a53db611c52 100644 (file)
@@ -2308,7 +2308,9 @@ package body Prj.Proc is
                  Name_Of
                    (Project_Node_Of (Variable_Node, Node_Tree), Node_Tree);
                The_Project :=
-                 Imported_Or_Extended_Project_From (Project, Name);
+                 Imported_Or_Extended_Project_From
+                   (Project, Name, No_Extending => True);
+               The_Package := No_Package;
             end if;
 
             --  If a package was specified for the case variable, get its id