diff options
author | Pascal Obry <obry@adacore.com> | 2020-11-20 17:28:50 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-12-15 06:41:53 -0500 |
commit | 3a6021dc1de871fc561ed0a60f1446a380d77c06 (patch) | |
tree | e79f660c35332421baf3f8a797fbf749f4cc0558 /gcc/ada/libgnat/g-diopit.adb | |
parent | afed612dc569a353dc08181446b026c6a6953f19 (diff) | |
download | gcc-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.adb | 5 |
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; |