From 208ba1dde2b9a4d31446ace2bba8f0d641d2e300 Mon Sep 17 00:00:00 2001 From: Mary <1760003+Thog@users.noreply.github.com> Date: Tue, 13 Jul 2021 16:48:54 +0200 Subject: Revert LibHac update Users are facing save destruction on failing extra data update apparently --- .../HOS/Services/Fs/FileSystemProxy/IDirectory.cs | 29 +++++++++------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs') diff --git a/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs b/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs index 99e545b1..565ddc4c 100644 --- a/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs +++ b/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs @@ -1,13 +1,15 @@ using LibHac; -using LibHac.Sf; +using LibHac.Fs; +using System; +using System.Runtime.InteropServices; namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy { - class IDirectory : DisposableIpcService + class IDirectory : IpcService { - private ReferenceCountedDisposable _baseDirectory; + private LibHac.Fs.Fsa.IDirectory _baseDirectory; - public IDirectory(ReferenceCountedDisposable directory) + public IDirectory(LibHac.Fs.Fsa.IDirectory directory) { _baseDirectory = directory; } @@ -17,13 +19,14 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy public ResultCode Read(ServiceCtx context) { ulong bufferPosition = context.Request.ReceiveBuff[0].Position; - ulong bufferLen = context.Request.ReceiveBuff[0].Size; + ulong bufferLen = context.Request.ReceiveBuff[0].Size; - byte[] entryBuffer = new byte[bufferLen]; + byte[] entriesBytes = new byte[bufferLen]; + Span entries = MemoryMarshal.Cast(entriesBytes); - Result result = _baseDirectory.Target.Read(out long entriesRead, new OutBuffer(entryBuffer)); + Result result = _baseDirectory.Read(out long entriesRead, entries); - context.Memory.Write(bufferPosition, entryBuffer); + context.Memory.Write(bufferPosition, entriesBytes); context.ResponseData.Write(entriesRead); return (ResultCode)result.Value; @@ -33,19 +36,11 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy // GetEntryCount() -> u64 public ResultCode GetEntryCount(ServiceCtx context) { - Result result = _baseDirectory.Target.GetEntryCount(out long entryCount); + Result result = _baseDirectory.GetEntryCount(out long entryCount); context.ResponseData.Write(entryCount); return (ResultCode)result.Value; } - - protected override void Dispose(bool isDisposing) - { - if (isDisposing) - { - _baseDirectory?.Dispose(); - } - } } } -- cgit v1.2.3