diff options
author | Alex Barney <thealexbarney@gmail.com> | 2021-12-23 09:55:50 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-23 13:55:50 -0300 |
commit | aa932a6df1764b7c600ae0ba4e0c7a0ba802f312 (patch) | |
tree | 24a390cf2330620aeeab1efbd42ae4099f61ca86 /Ryujinx.HLE/FileSystem/VirtualFileSystem.cs | |
parent | cb43cc7e322014ce2bd0ee73b06d403be62fa8d5 (diff) |
Update to LibHac v0.14.3 (#2925)
* Update to LibHac v0.14.3
* Fix loading NCAs that don't have a data partition
Diffstat (limited to 'Ryujinx.HLE/FileSystem/VirtualFileSystem.cs')
-rw-r--r-- | Ryujinx.HLE/FileSystem/VirtualFileSystem.cs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs index 580a794e..87508216 100644 --- a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs +++ b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs @@ -17,6 +17,8 @@ using System.Buffers.Text; using System.Collections.Generic; using System.IO; using System.Runtime.CompilerServices; + +using Path = System.IO.Path; using RightsId = LibHac.Fs.RightsId; namespace Ryujinx.HLE.FileSystem @@ -240,11 +242,13 @@ namespace Ryujinx.HLE.FileSystem { foreach (DirectoryEntryEx ticketEntry in fs.EnumerateEntries("/", "*.tik")) { - Result result = fs.OpenFile(out IFile ticketFile, ticketEntry.FullPath.ToU8Span(), OpenMode.Read); + using var ticketFile = new UniqueRef<IFile>(); + + Result result = fs.OpenFile(ref ticketFile.Ref(), ticketEntry.FullPath.ToU8Span(), OpenMode.Read); if (result.IsSuccess()) { - Ticket ticket = new Ticket(ticketFile.AsStream()); + Ticket ticket = new Ticket(ticketFile.Get.AsStream()); if (ticket.TitleKeyType == TitleKeyType.Common) { @@ -280,12 +284,14 @@ namespace Ryujinx.HLE.FileSystem { Span<SaveDataInfo> info = stackalloc SaveDataInfo[8]; - Result rc = hos.Fs.OpenSaveDataIterator(out var iterator, spaceId); + using var iterator = new UniqueRef<SaveDataIterator>(); + + Result rc = hos.Fs.OpenSaveDataIterator(ref iterator.Ref(), spaceId); if (rc.IsFailure()) return rc; while (true) { - rc = iterator.ReadSaveDataInfo(out long count, info); + rc = iterator.Get.ReadSaveDataInfo(out long count, info); if (rc.IsFailure()) return rc; if (count == 0) |