From e90643d71dcbd2b3124c299f411b518da82b1234 Mon Sep 17 00:00:00 2001 From: morkt Date: Fri, 1 Aug 2014 20:40:14 +0400 Subject: [PATCH] use ArcView.Frame.AsciiEqual for sanity check. --- ArcFormats/ArcMajiro.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ArcFormats/ArcMajiro.cs b/ArcFormats/ArcMajiro.cs index cffe3469..442f0fc6 100644 --- a/ArcFormats/ArcMajiro.cs +++ b/ArcFormats/ArcMajiro.cs @@ -68,13 +68,10 @@ namespace GameRes.Formats.Majiro public override ArcFile TryOpen (ArcView file) { - byte[] header = new byte[16]; - file.View.Read (0, header, 0, 16); - var char_header = header.Select (b => Convert.ToChar (b)); int version; - if (char_header.SequenceEqual ("MajiroArcV1.000\0")) + if (file.View.AsciiEqual (0, "MajiroArcV1.000\0")) version = 1; -// else if (char_header.SequenceEqual ("MajiroArcV2.000\0")) +// else if (file.View.AsciiEqual (0, "MajiroArcV2.000\0")) // version = 2; else return null; @@ -88,12 +85,13 @@ namespace GameRes.Formats.Majiro table_size *= 4 * (version+1); if (table_size + 0x1c != names_offset) return null; + if (data_offset != file.View.Reserve (0, data_offset)) + return null; int names_size = (int)(data_offset - names_offset); var names = new byte[names_size]; file.View.Read (names_offset, names, 0, (uint)names_size); int names_pos = 0; uint table_pos = 0x1c; - file.View.Reserve (0, data_offset); uint offset_next = file.View.ReadUInt32 (table_pos+4); var dir = new List (count);