From f11ac8e701b988b82ceb0d5f2fb60a22054b4d9b Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Thu, 30 Oct 2014 12:45:47 +0100 Subject: [PATCH] Recommit wrongly reverted change. From-SVN: r216923 --- gcc/ada/a-comutr.adb | 40 +++++++++++++++++++++------------------- gcc/ada/prj-proc.adb | 4 +++- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/gcc/ada/a-comutr.adb b/gcc/ada/a-comutr.adb index 01e7e1c809c..f45a27a1e0d 100644 --- a/gcc/ada/a-comutr.adb +++ b/gcc/ada/a-comutr.adb @@ -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; ------------------------- diff --git a/gcc/ada/prj-proc.adb b/gcc/ada/prj-proc.adb index bb07da9bdea..9eb281468e4 100644 --- a/gcc/ada/prj-proc.adb +++ b/gcc/ada/prj-proc.adb @@ -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