From 2c89daf69422f3d09aed7b92852f21001f7afaaa Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Mon, 5 Mar 2018 15:01:33 +0000 Subject: [PATCH] Correct when OS/2 bitmap size is image size and not header size. --- libexeinfo/Os2/Bitmap.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libexeinfo/Os2/Bitmap.cs b/libexeinfo/Os2/Bitmap.cs index 1e6050a..b9e8421 100644 --- a/libexeinfo/Os2/Bitmap.cs +++ b/libexeinfo/Os2/Bitmap.cs @@ -91,8 +91,9 @@ namespace libexeinfo.Os2 } else { - remaining = 1; - pos = 0; + remaining = 1; + pos = 0; + bitmapArrayHeader.Next = 0; } while(remaining > 0) @@ -102,13 +103,13 @@ namespace libexeinfo.Os2 bitmapFileHeader = BigEndianMarshal.ByteArrayToStructureLittleEndian(buffer); // Stop at unknown header - if(bitmapFileHeader.Size != Marshal.SizeOf(typeof(BitmapInfoHeader))) break; + if(bitmapFileHeader.Fix != 12) break; // Multiplanes not supported if(bitmapFileHeader.Planes != 1) break; // TODO: Non paletted? - pos += bitmapFileHeader.Size; + pos += Marshal.SizeOf(typeof(BitmapInfoHeader)); RGB[] palette = new RGB[1 << bitmapFileHeader.BitsPerPlane]; buffer = new byte[Marshal.SizeOf(typeof(RGB))]; for(int i = 0; i < palette.Length; i++)