From 7b73ada26d287fb64d1537d2010e0e75ee9f8363 Mon Sep 17 00:00:00 2001 From: kyororay Date: Fri, 12 Sep 2025 00:55:07 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=AD=A3:=20PackedEntry=E3=82=AF?= =?UTF-8?q?=E3=83=A9=E3=82=B9=E3=81=AE=E3=83=A1=E3=83=B3=E3=83=90=E5=A4=89?= =?UTF-8?q?=E6=95=B0IsPacked=E3=81=AE=E5=88=A4=E5=AE=9A=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ArcFormats/Cyberworks/ArcDAT.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ArcFormats/Cyberworks/ArcDAT.cs b/ArcFormats/Cyberworks/ArcDAT.cs index 56c59d2c..481e16f7 100644 --- a/ArcFormats/Cyberworks/ArcDAT.cs +++ b/ArcFormats/Cyberworks/ArcDAT.cs @@ -460,7 +460,7 @@ namespace GameRes.Formats.Cyberworks }; if (!entry.CheckPlacement (file.MaxOffset)) return null; - entry.IsPacked = entry.UnpackedSize != entry.Size; + entry.IsPacked = entry.UnpackedSize != entry.Size && entry.UnpackedSize != 0; dir.Add (entry); } } @@ -637,7 +637,7 @@ namespace GameRes.Formats.Cyberworks var entry = new PackedEntry { Name = id.ToString ("D6") }; entry.UnpackedSize = m_index.ReadUInt32(); entry.Size = m_index.ReadUInt32(); - entry.IsPacked = entry.UnpackedSize != entry.Size; + entry.IsPacked = entry.UnpackedSize != entry.Size && entry.UnpackedSize != 0; entry.Offset = m_index.ReadUInt32(); return entry; } From b66e3130dd4b05ec67b3d03e1ca48c0cea967e42 Mon Sep 17 00:00:00 2001 From: kyororay Date: Fri, 12 Sep 2025 00:58:32 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=AD=A3:=20=E3=83=99=E3=83=BC?= =?UTF-8?q?=E3=82=B9=E7=94=BB=E5=83=8F=E6=A4=9C=E7=B4=A2=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=81=AB=E3=81=8A=E3=81=84=E3=81=A6=E3=80=81=E7=94=BB=E5=83=8F?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE=E7=9B=B4=E5=89=8D=E3=81=AB?= =?UTF-8?q?=E3=81=82=E3=82=8B=E4=B8=8D=E8=A6=81=E3=81=AA=E3=83=91=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=83=B3=E3=82=B0=E3=82=92=E5=89=8A=E9=99=A4=E3=81=99?= =?UTF-8?q?=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ArcFormats/Cyberworks/ImageTINK.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ArcFormats/Cyberworks/ImageTINK.cs b/ArcFormats/Cyberworks/ImageTINK.cs index 001f0b39..d5f00247 100644 --- a/ArcFormats/Cyberworks/ImageTINK.cs +++ b/ArcFormats/Cyberworks/ImageTINK.cs @@ -147,12 +147,18 @@ namespace GameRes.Formats.Cyberworks var size_buf = new byte[4]; input.Read (size_buf, 0 , 4); int png_size = BigEndian.ToInt32 (size_buf, 0); - BitmapSource frame; - // work-around for possible extra padding before PNG data - using (var membuf = new MemoryStream (png_size+4)) + + List mem_list; + using (var membuf = new MemoryStream()) + { + input.CopyTo(membuf); + mem_list = membuf.ToArray().ToList(); + mem_list.RemoveRange(0, mem_list.Count - png_size); + } + + BitmapSource frame; + using (var membuf = new MemoryStream(mem_list.ToArray())) { - input.CopyTo (membuf); - membuf.Seek (-png_size, SeekOrigin.End); var decoder = new PngBitmapDecoder (membuf, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); frame = decoder.Frames[0];