re PR ada/47880 (Free in System.Pool_Local raises Storage_Error)
authorThomas Quinot <quinot@adacore.com>
Thu, 4 Aug 2011 08:32:54 +0000 (10:32 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 4 Aug 2011 08:32:54 +0000 (10:32 +0200)
2011-08-04  Thomas Quinot  <quinot@adacore.com>

PR ada/47880
* s-pooloc.adb (Deallocate): Fix the case of deallocating the only
allocated object.

From-SVN: r177332

gcc/ada/s-pooloc.adb

index 37370e50284f7e0879f43421bebc3da938e3d0a6..2a161f49de31f52d77d00324b4725ccbd002aba2 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2011, 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- --
@@ -111,7 +111,10 @@ package body System.Pool_Local is
    begin
       if Prev (Allocated).all = Null_Address then
          Pool.First := Next (Allocated).all;
-         Prev (Pool.First).all := Null_Address;
+
+         if Pool.First /= Null_Address then
+            Prev (Pool.First).all := Null_Address;
+         end if;
       else
          Next (Prev (Allocated).all).all := Next (Allocated).all;
       end if;