[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Fri, 5 Aug 2011 15:32:47 +0000 (17:32 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 5 Aug 2011 15:32:47 +0000 (17:32 +0200)
2011-08-05  Matthew Heaney  <heaney@adacore.com>

* a-comutr.adb, a-cimutr.adb, a-cbmutr.adb (Read): do not use T'Valid
to check count, check sign of value instead.
* a-comutr.adb, a-cimutr.adb (Write): return immediately if tree empty
(Copy_Subtree): allocate copy of source element
(Equal_Subtree): compare elements, not access objects

2011-08-05  Vincent Celier  <celier@adacore.com>

* gnat_ugn.texi: Fix VMS alternative.

From-SVN: r177457

gcc/ada/ChangeLog
gcc/ada/a-cbmutr.adb
gcc/ada/a-cimutr.adb
gcc/ada/a-comutr.adb
gcc/ada/gnat_ugn.texi

index 3ca2a71c1df1a38a199394c2814859f736e1b1bb..061010c533fead3b1ba941adb1db0cf6f316d179 100644 (file)
@@ -1,3 +1,15 @@
+2011-08-05  Matthew Heaney  <heaney@adacore.com>
+
+       * a-comutr.adb, a-cimutr.adb, a-cbmutr.adb (Read): do not use T'Valid
+       to check count, check sign of value instead.
+       * a-comutr.adb, a-cimutr.adb (Write): return immediately if tree empty
+       (Copy_Subtree): allocate copy of source element
+       (Equal_Subtree): compare elements, not access objects
+
+2011-08-05  Vincent Celier  <celier@adacore.com>
+
+       * gnat_ugn.texi: Fix VMS alternative.
+
 2011-08-05  Thomas Quinot  <quinot@adacore.com>
 
        * sem_ch11.adb: Add comment.
index 6e22e0e8756057946f18f4a0096d68af14d36db0..1392a4fdc177a300c50bd17c6f3f91b22fd2b1c1 100644 (file)
@@ -2117,20 +2117,26 @@ package body Ada.Containers.Bounded_Multiway_Trees is
 
       NN : Tree_Node_Array renames Container.Nodes;
 
-      Total_Count, Read_Count : Count_Type;
+      Total_Count : Count_Type'Base;
+      --  Value read from the stream that says how many elements follow
+
+      Read_Count : Count_Type'Base;
+      --  Actual number of elements read from the stream
 
       -------------------
       -- Read_Children --
       -------------------
 
       procedure Read_Children (Subtree : Count_Type) is
-         Count : Count_Type;  -- number of child subtrees
-         CC    : Children_Type;
+         Count : Count_Type'Base;
+         --  number of child subtrees
+
+         CC : Children_Type;
 
       begin
          Count_Type'Read (Stream, Count);
 
-         if not Count'Valid then  -- Is this check necessary???
+         if Count < 0 then
             raise Program_Error with "attempt to read from corrupt stream";
          end if;
 
@@ -2180,7 +2186,7 @@ package body Ada.Containers.Bounded_Multiway_Trees is
 
       Count_Type'Read (Stream, Total_Count);
 
-      if not Total_Count'Valid then  -- Is this check necessary???
+      if Total_Count < 0 then
          raise Program_Error with "attempt to read from corrupt stream";
       end if;
 
index 1e035ec62f785b6056bd256e40fadfdaa41b5c43..d5736fc3ffe855fbe2f8327b38c70439c6cb809f 100644 (file)
@@ -556,8 +556,10 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
       Target : out Tree_Node_Access;
       Count  : in out Count_Type)
    is
+      E : constant Element_Access := new Element_Type'(Source.Element.all);
+
    begin
-      Target := new Tree_Node_Type'(Element => Source.Element,
+      Target := new Tree_Node_Type'(Element => E,
                                     Parent  => Parent,
                                     others  => <>);
 
@@ -886,7 +888,7 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
       Right_Subtree : Tree_Node_Access) return Boolean
    is
    begin
-      if Left_Subtree.Element /= Right_Subtree.Element then
+      if Left_Subtree.Element.all /= Right_Subtree.Element.all then
          return False;
       end if;
 
@@ -1638,8 +1640,11 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
       function Read_Subtree
         (Parent : Tree_Node_Access) return Tree_Node_Access;
 
-      Total_Count : Count_Type;
-      Read_Count  : Count_Type;
+      Total_Count : Count_Type'Base;
+      --  Value read from the stream that says how many elements follow
+
+      Read_Count : Count_Type'Base;
+      --  Actual number of elements read from the stream
 
       -------------------
       -- Read_Children --
@@ -1650,7 +1655,7 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
          pragma Assert (Subtree.Children.First = null);
          pragma Assert (Subtree.Children.Last = null);
 
-         Count : Count_Type;
+         Count : Count_Type'Base;
          --  Number of child subtrees
 
          C : Children_Type;
@@ -1658,7 +1663,7 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
       begin
          Count_Type'Read (Stream, Count);
 
-         if not Count'Valid then  -- Is this check necessary???
+         if Count < 0 then
             raise Program_Error with "attempt to read from corrupt stream";
          end if;
 
@@ -1712,7 +1717,7 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
 
       Count_Type'Read (Stream, Total_Count);
 
-      if not Total_Count'Valid then  -- Is this check necessary???
+      if Total_Count < 0 then
          raise Program_Error with "attempt to read from corrupt stream";
       end if;
 
@@ -2383,6 +2388,11 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
 
    begin
       Count_Type'Write (Stream, Container.Count);
+
+      if Container.Count = 0 then
+         return;
+      end if;
+
       Write_Children (Root_Node (Container));
    end Write;
 
index 7c7661d7e4f69d6461645c667721455defeddad2..dfe50c18f4e4938dc8178583e7b6100678f75f8d 100644 (file)
@@ -1681,7 +1681,11 @@ package body Ada.Containers.Multiway_Trees is
       function Read_Subtree
         (Parent : Tree_Node_Access) return Tree_Node_Access;
 
-      Total_Count, Read_Count : Count_Type;
+      Total_Count : Count_Type'Base;
+      --  Value read from the stream that says how many elements follow
+
+      Read_Count : Count_Type'Base;
+      --  Actual number of elements read from the stream
 
       -------------------
       -- Read_Children --
@@ -1692,13 +1696,15 @@ package body Ada.Containers.Multiway_Trees is
          pragma Assert (Subtree.Children.First = null);
          pragma Assert (Subtree.Children.Last = null);
 
-         Count : Count_Type;  -- number of child subtrees
-         C     : Children_Type;
+         Count : Count_Type'Base;
+         --  Number of child subtrees
+
+         C : Children_Type;
 
       begin
          Count_Type'Read (Stream, Count);
 
-         if not Count'Valid then  -- Is this check necessary???
+         if Count < 0 then
             raise Program_Error with "attempt to read from corrupt stream";
          end if;
 
@@ -1749,7 +1755,7 @@ package body Ada.Containers.Multiway_Trees is
 
       Count_Type'Read (Stream, Total_Count);
 
-      if not Total_Count'Valid then  -- Is this check necessary???
+      if Total_Count < 0 then
          raise Program_Error with "attempt to read from corrupt stream";
       end if;
 
@@ -2428,6 +2434,11 @@ package body Ada.Containers.Multiway_Trees is
 
    begin
       Count_Type'Write (Stream, Container.Count);
+
+      if Container.Count = 0 then
+         return;
+      end if;
+
       Write_Children (Root_Node (Container));
    end Write;
 
index 48725cff908bee5f217b212e02f82fb1bff0687f..7f2d655540e380c7ce1265cbc740bf4a7d1d1dd9 100644 (file)
@@ -6312,7 +6312,7 @@ example:
 
 @item ^C^COMMENTS1^ (single space)
 @emph{Check comments, single space.}
-This is identical to @code{^c^COMMENTS} except that only one space
+This is identical to @code{^c^COMMENTS^} except that only one space
 is required following the @code{--} of a comment instead of two.
 
 @item ^d^DOS_LINE_ENDINGS^