Skip to content

Commit 0ac534f

Browse files
committed
allow enumeration of dirents despite not all of them succeeding
see ppy#6082
1 parent ba569bf commit 0ac534f

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

osu.Framework/Graphics/UserInterface/DirectorySelector.cs

+13-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using osu.Framework.Bindables;
1212
using osu.Framework.Extensions.EnumExtensions;
1313
using osu.Framework.Graphics.Containers;
14+
using osu.Framework.Logging;
1415
using osu.Framework.Platform;
1516
using osuTK;
1617

@@ -204,10 +205,19 @@ protected virtual bool TryGetEntriesForPath(DirectoryInfo path, out ICollection<
204205

205206
try
206207
{
207-
foreach (var dir in path.GetDirectories().OrderBy(d => d.Name))
208+
foreach (string directoryName in Directory.GetDirectories(path.FullName).OrderBy(d => d))
208209
{
209-
if (ShowHiddenItems.Value || !dir.Attributes.HasFlagFast(FileAttributes.Hidden))
210-
items.Add(CreateDirectoryItem(dir));
210+
try
211+
{
212+
DirectoryInfo di = new DirectoryInfo(directoryName);
213+
if (ShowHiddenItems.Value || !di.Attributes.HasFlagFast(FileAttributes.Hidden))
214+
items.Add(CreateDirectoryItem(di));
215+
}
216+
catch
217+
{
218+
// Don't fail enumeration if we fail getting attributes for a single entry
219+
Logger.Log($"Directory {directoryName} is inaccessible", LoggingTarget.Information, LogLevel.Debug);
220+
}
211221
}
212222

213223
return true;

0 commit comments

Comments
 (0)