diff --git a/Users/Kudzu/Breakpoints/BreakpointsOS.cs b/Users/Kudzu/Breakpoints/BreakpointsOS.cs index a861a0682..982b58c13 100644 --- a/Users/Kudzu/Breakpoints/BreakpointsOS.cs +++ b/Users/Kudzu/Breakpoints/BreakpointsOS.cs @@ -382,7 +382,8 @@ namespace Kudzu.BreakpointsKernel var xData = new byte[xRootFile.Size]; var size = (int) xRootFile.Size; Console.WriteLine("Size: " + size); - xStream.Read(xData, 0, (int) xRootFile.Size); + var sizeInt = (int)xRootFile.Size; + xStream.Read(xData, 0, sizeInt); var xText = Encoding.ASCII.GetString(xData); Console.WriteLine(xText); } diff --git a/source2/Kernel/System/Cosmos.System/Filesystem/FAT/FatStream.cs b/source2/Kernel/System/Cosmos.System/Filesystem/FAT/FatStream.cs index 28c05cfbd..84ce72d38 100644 --- a/source2/Kernel/System/Cosmos.System/Filesystem/FAT/FatStream.cs +++ b/source2/Kernel/System/Cosmos.System/Filesystem/FAT/FatStream.cs @@ -96,18 +96,18 @@ namespace Cosmos.System.Filesystem.FAT { UInt64 xClusterIdx = mPosition / xClusterSize; UInt64 xPosInCluster = mPosition % xClusterSize; mFS.ReadCluster((ulong)mFatTable[(int)xClusterIdx], xCluster); - // long xReadSize; - // if (xPosInCluster + xCount > xClusterSize) { - // xReadSize = (long)(xClusterSize - xPosInCluster - 1); - // } else { - // xReadSize = (long)xCount; - // } - // // no need for a long version, because internal Array.Copy() does a cast down to int, and a range check, - // // or we do a semantic change here - // Array.Copy(xCluster, (long)xPosInCluster, aBuffer, aOffset, xReadSize); + long xReadSize; + if (xPosInCluster + xCount > xClusterSize) { + xReadSize = (long)(xClusterSize - xPosInCluster - 1); + } else { + xReadSize = (long)xCount; + } + // no need for a long version, because internal Array.Copy() does a cast down to int, and a range check, + // or we do a semantic change here + Array.Copy(xCluster, (long)xPosInCluster, aBuffer, aOffset, xReadSize); - // aOffset += xReadSize; - //xCount -= (ulong)xReadSize; + aOffset += xReadSize; + xCount -= (ulong)xReadSize; xCount = 0; }