From faf093122061e2dac3ecfaa9d452355e30db2e8f Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 2 Aug 2019 01:42:22 +0100 Subject: [PATCH] Fix decoding multiblock directories in Opera filesystem. --- DiscImageChef.Filesystems/Opera/Dir.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/DiscImageChef.Filesystems/Opera/Dir.cs b/DiscImageChef.Filesystems/Opera/Dir.cs index 106e1d67c..3ee208542 100644 --- a/DiscImageChef.Filesystems/Opera/Dir.cs +++ b/DiscImageChef.Filesystems/Opera/Dir.cs @@ -73,12 +73,13 @@ namespace DiscImageChef.Filesystems int nextBlock = firstBlock; + DirectoryHeader header; + do { - byte[] data = - image.ReadSectors((ulong)(nextBlock * volumeBlockSizeRatio), volumeBlockSizeRatio); - DirectoryHeader header = Marshal.ByteArrayToStructureBigEndian(data); - nextBlock = header.next_block; + byte[] data = image.ReadSectors((ulong)(nextBlock * volumeBlockSizeRatio), volumeBlockSizeRatio); + header = Marshal.ByteArrayToStructureBigEndian(data); + nextBlock = header.next_block + firstBlock; int off = (int)header.first_used; @@ -106,7 +107,7 @@ namespace DiscImageChef.Filesystems if((entry.flags & (uint)FileFlags.LastEntry) != 0) break; } - while(nextBlock != -1); + while(header.next_block != -1); return entries; }