aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/libgnat/g-diopit.adb
diff options
context:
space:
mode:
authorPascal Obry <obry@adacore.com>2020-11-20 17:28:50 +0100
committerPierre-Marie de Rodat <derodat@adacore.com>2020-12-15 06:41:53 -0500
commit3a6021dc1de871fc561ed0a60f1446a380d77c06 (patch)
treee79f660c35332421baf3f8a797fbf749f4cc0558 /gcc/ada/libgnat/g-diopit.adb
parentafed612dc569a353dc08181446b026c6a6953f19 (diff)
downloadgcc-3a6021dc1de871fc561ed0a60f1446a380d77c06.zip
gcc-3a6021dc1de871fc561ed0a60f1446a380d77c06.tar.gz
gcc-3a6021dc1de871fc561ed0a60f1446a380d77c06.tar.bz2
[Ada] Fix possible infinite recursion in directory iterator
gcc/ada/ * libgnat/g-diopit.adb (Find): Fix possible infinite recursion in Find iterator. * libgnat/g-diopit.ads (Find): Update comments accordingly.
Diffstat (limited to 'gcc/ada/libgnat/g-diopit.adb')
-rw-r--r--gcc/ada/libgnat/g-diopit.adb5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/ada/libgnat/g-diopit.adb b/gcc/ada/libgnat/g-diopit.adb
index 50bbf9b..1e8627e 100644
--- a/gcc/ada/libgnat/g-diopit.adb
+++ b/gcc/ada/libgnat/g-diopit.adb
@@ -32,6 +32,7 @@
with Ada.Characters.Handling;
with Ada.Strings.Fixed;
with Ada.Strings.Maps;
+
with GNAT.OS_Lib;
with GNAT.Regexp;
@@ -49,7 +50,7 @@ package body GNAT.Directory_Operations.Iteration is
is
File_Regexp : constant Regexp.Regexp := Regexp.Compile (File_Pattern);
Index : Natural := 0;
- Quit : Boolean;
+ Quit : Boolean := False;
procedure Read_Directory (Directory : Dir_Name_Str);
-- Open Directory and read all entries. This routine is called
@@ -113,6 +114,7 @@ package body GNAT.Directory_Operations.Iteration is
if not (Dir_Entry = "." or else Dir_Entry = "..")
and then OS_Lib.Is_Directory (Pathname)
+ and then not OS_Lib.Is_Symbolic_Link (Pathname)
then
Read_Directory (Pathname);
exit when Quit;
@@ -124,7 +126,6 @@ package body GNAT.Directory_Operations.Iteration is
end Read_Directory;
begin
- Quit := False;
Read_Directory (Root_Directory);
end Find;