From 9fd59c64e024bcf27af68ecdaa65553d445daf7a Mon Sep 17 00:00:00 2001 From: Crsky Date: Sun, 28 Sep 2025 00:44:00 +0800 Subject: [PATCH] Avoid unnecessary memory copying. --- ArcFormats/Cyberworks/ImageTINK.cs | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/ArcFormats/Cyberworks/ImageTINK.cs b/ArcFormats/Cyberworks/ImageTINK.cs index d5f00247..340989ca 100644 --- a/ArcFormats/Cyberworks/ImageTINK.cs +++ b/ArcFormats/Cyberworks/ImageTINK.cs @@ -148,18 +148,10 @@ namespace GameRes.Formats.Cyberworks input.Read (size_buf, 0 , 4); int png_size = BigEndian.ToInt32 (size_buf, 0); - 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())) + using (var membuf = new MemoryStream (png_size+4)) { - var decoder = new PngBitmapDecoder (membuf, BitmapCreateOptions.None, + var decoder = new PngBitmapDecoder (new StreamRegion (membuf, membuf.Length-png_size), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); frame = decoder.Frames[0]; }