diff --git a/GameRes/ArcFile.cs b/GameRes/ArcFile.cs index 17761d7a..c660b015 100644 --- a/GameRes/ArcFile.cs +++ b/GameRes/ArcFile.cs @@ -161,9 +161,22 @@ namespace GameRes if (stream.CanSeek) size = (uint)stream.Length; else if (null != packed_entry && packed_entry.IsPacked) + { size = packed_entry.UnpackedSize; + if (0 == size) + { + using (var copy = new MemoryStream()) + { + stream.CopyTo (copy); + copy.Position = 0; + return new ArcView (copy, entry.Name, (uint)copy.Length); + } + } + } else size = entry.Size; + if (0 == size) + throw new FileSizeException (Strings.garStrings.MsgFileIsEmpty); return new ArcView (stream, entry.Name, size); } } diff --git a/GameRes/Strings/garStrings.Designer.cs b/GameRes/Strings/garStrings.Designer.cs index 0baa50f2..562fcf1e 100644 --- a/GameRes/Strings/garStrings.Designer.cs +++ b/GameRes/Strings/garStrings.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34209 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -60,6 +60,15 @@ namespace GameRes.Strings { } } + /// + /// Looks up a localized string similar to File is empty. + /// + public static string MsgFileIsEmpty { + get { + return ResourceManager.GetString("MsgFileIsEmpty", resourceCulture); + } + } + /// /// Looks up a localized string similar to File is too large. /// diff --git a/GameRes/Strings/garStrings.ko-KR.resx b/GameRes/Strings/garStrings.ko-KR.resx index 91faa1aa..01f28526 100644 --- a/GameRes/Strings/garStrings.ko-KR.resx +++ b/GameRes/Strings/garStrings.ko-KR.resx @@ -117,6 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + File is empty + translation pending + 파일이 너무 큽니다 @@ -135,4 +139,4 @@ 파일을 리소스 아카이브로 열지 못하였습니다 - + \ No newline at end of file diff --git a/GameRes/Strings/garStrings.resx b/GameRes/Strings/garStrings.resx index dcfe9a63..baf983e7 100644 --- a/GameRes/Strings/garStrings.resx +++ b/GameRes/Strings/garStrings.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + File is empty + File is too large diff --git a/GameRes/Strings/garStrings.ru-RU.resx b/GameRes/Strings/garStrings.ru-RU.resx index 04b4d9e3..0577da2c 100644 --- a/GameRes/Strings/garStrings.ru-RU.resx +++ b/GameRes/Strings/garStrings.ru-RU.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Файл пуст + Слишком большой размер файла diff --git a/GameRes/Strings/garStrings.zh-Hans.resx b/GameRes/Strings/garStrings.zh-Hans.resx index ea4989ae..96daebb4 100644 --- a/GameRes/Strings/garStrings.zh-Hans.resx +++ b/GameRes/Strings/garStrings.zh-Hans.resx @@ -117,6 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + File is empty + translation pending + 文件尺寸太大。