OSDN Git Service

2005-03-29 Robert Dewar <dewar@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 29 Mar 2005 16:22:32 +0000 (16:22 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 29 Mar 2005 16:22:32 +0000 (16:22 +0000)
* a-direct.ads, a-direct.adb (Start_Search): Free allocated search
buffer if an exception is raised.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97188 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/a-direct.adb
gcc/ada/a-direct.ads

index 33562f1..8104559 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2004 Free Software Foundation, Inc.               --
+--          Copyright (C) 2004-2005 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- --
 --                                                                          --
 ------------------------------------------------------------------------------
 
-with Ada.Directories.Validity; use Ada.Directories.Validity;
-with Ada.Strings.Unbounded;    use Ada.Strings.Unbounded;
+with Ada.Directories.Validity;   use Ada.Directories.Validity;
+with Ada.Strings.Unbounded;      use Ada.Strings.Unbounded;
 with Ada.Unchecked_Deallocation;
-with Ada.Characters.Handling;  use Ada.Characters.Handling;
+with Ada.Characters.Handling;    use Ada.Characters.Handling;
 
-with GNAT.Directory_Operations; use GNAT.Directory_Operations;
-with GNAT.OS_Lib;               use GNAT.OS_Lib;
-with GNAT.Regexp;               use GNAT.Regexp;
---  ??? Ada units cannot depend on GNAT units
+with GNAT.Directory_Operations;  use GNAT.Directory_Operations;
+with GNAT.OS_Lib;                use GNAT.OS_Lib;
+with GNAT.Regexp;                use GNAT.Regexp;
+--  ??? Ada units should not depend on GNAT units
 
 with System;
 
@@ -938,6 +938,7 @@ package body Ada.Directories is
 
       exception
          when Error_In_Regexp =>
+            Free (Search.Value);
             raise Name_Error;
       end;
 
index 4cd2340..5047cc7 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 2004 Free Software Foundation, Inc.               --
+--          Copyright (C) 2004-2005 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived for use with GNAT from AI-00248,  which is --
 -- expected to be a part of a future expected revised Ada Reference Manual. --
@@ -304,10 +304,10 @@ package Ada.Directories is
    --  Starts a search in the directory entry in the directory named by
    --  Directory for entries matching Pattern. Pattern represents a file name
    --  matching pattern. If Pattern is null, all items in the directory are
-   --  matched; otherwise, the interpretation of Pattern is
-   --  implementation-defined. Only items which match Filter will be returned.
-   --  After a successful call on Start_Search, the object Search may have
-   --  entries available, but it may have no entries available if no files or
+   --  matched; otherwise, the interpretation of Pattern is implementation-
+   --  defined. Only items which match Filter will be returned. After a
+   --  successful call on Start_Search, the object Search may have entries
+   --  available, but it may have no entries available if no files or
    --  directories match Pattern and Filter. The exception Name_Error is
    --  propagated if the string given by Directory does not identify an
    --  existing directory, or if Pattern does not allow the identification of
@@ -317,7 +317,10 @@ package Ada.Directories is
 
    procedure End_Search (Search : in out Search_Type);
    --  Ends the search represented by Search. After a successful call on
-   --  End_Search, the object Search will have no entries available.
+   --  End_Search, the object Search will have no entries available. Note
+   --  that is is not necessary to call End_Search if the call to Start_Search
+   --  was unsuccessful and raised an exception (but it is harmless to make
+   --  the call in this case)>
 
    function More_Entries (Search : Search_Type) return Boolean;
    --  Returns True if more entries are available to be returned by a call