From 632d297f4ba6b355019e13455a663b1e2cce65a9 Mon Sep 17 00:00:00 2001 From: Ezekiel Bethel Date: Mon, 19 Feb 2018 20:54:14 +0000 Subject: [PATCH] This should work. --- Ryujinx/OsHle/Objects/FspSrv/IDirectory.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Ryujinx/OsHle/Objects/FspSrv/IDirectory.cs b/Ryujinx/OsHle/Objects/FspSrv/IDirectory.cs index 18565657bb..b22eaedd37 100644 --- a/Ryujinx/OsHle/Objects/FspSrv/IDirectory.cs +++ b/Ryujinx/OsHle/Objects/FspSrv/IDirectory.cs @@ -78,12 +78,17 @@ namespace Ryujinx.OsHle.Objects.FspSrv long BufferLen = Context.Request.ReceiveBuff[0].Size; long MaxDirectories = BufferLen / DirectoryEntrySize; - if (MaxDirectories >= DirectoryEntries.Count) MaxDirectories = DirectoryEntries.Count; - - int CurrentIndex, CurrentItem; - byte[] DirectoryEntry = new byte[DirectoryEntrySize]; - for (CurrentIndex = 0, CurrentItem = LastItem; CurrentIndex < MaxDirectories; CurrentIndex++, CurrentItem++) + if (MaxDirectories > DirectoryEntries.Count - LastItem) { + MaxDirectories = DirectoryEntries.Count - LastItem; + } + + int CurrentIndex; + byte[] DirectoryEntry = new byte[DirectoryEntrySize]; + for (CurrentIndex = 0; CurrentIndex < MaxDirectories; CurrentIndex++) + { + int CurrentItem = LastItem + CurrentIndex; + MemoryStream MemStream = new MemoryStream(); BinaryWriter Writer = new BinaryWriter(MemStream); @@ -100,7 +105,7 @@ namespace Ryujinx.OsHle.Objects.FspSrv if (LastItem < DirectoryEntries.Count) { - LastItem = CurrentItem; + LastItem += CurrentIndex; Context.ResponseData.Write((long)CurrentIndex); // index = number of entries written this call. } else