-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Labels
Milestone
Description
PR #57508 added the following code:
runtime/src/mono/System.Private.CoreLib/src/System/Environment.iOS.cs
Lines 102 to 111 in 98670d7
| #if TARGET_TVOS | |
| string? path = CombineSearchPath(NSSearchPathDirectory.NSLibraryDirectory, Path.Combine("Caches", "Documents", subdirectory)); | |
| // Special version of CombineSearchPath which creates the path if needed. | |
| // This isn't needed for "real" search paths which always exist, but on tvOS | |
| // the base path is really a subdirectory we define rather than an OS directory. | |
| // In order to not treat Directory.Exists(SpecialFolder.ApplicationData) differently | |
| // on tvOS, guarantee that it exists by creating it here | |
| if (!Directory.Exists (path)) | |
| Directory.CreateDirectory (path); | |
| #else |
While the intention to create ApplicationData directory is correct the implementation creates also any subdirectory as well which is different from what legacy Mono did and what iOS does.
The expected version of the code should be closer to
string? path = CombineSearchPath(NSSearchPathDirectory.NSLibraryDirectory, Path.Combine("Caches", "Documents"));
// Special version of CombineSearchPath which creates the path if needed.
// This isn't needed for "real" search paths which always exist, but on tvOS
// the base path is really a subdirectory we define rather than an OS directory.
// In order to not treat Directory.Exists(SpecialFolder.ApplicationData) differently
// on tvOS, guarantee that it exists by creating it here
if (!Directory.Exists (path))
Directory.CreateDirectory (path);
path = Path.Combine(path, subdirectory);(ie. only create the base directory and then combine the paths)
Ref: dotnet/macios#12640