mirror of
https://github.com/crskycode/GARbro.git
synced 2024-11-23 21:55:34 +08:00
(GRP): return compressed stream on decompression errors.
This commit is contained in:
parent
42dce0e586
commit
efbac265ff
@ -160,13 +160,20 @@ namespace GameRes.Formats.Ankh
|
|||||||
var pent = entry as PackedEntry;
|
var pent = entry as PackedEntry;
|
||||||
if (pent != null && pent.IsPacked && pent.Size > 8)
|
if (pent != null && pent.IsPacked && pent.Size > 8)
|
||||||
{
|
{
|
||||||
if (arc.File.View.AsciiEqual (entry.Offset, "TPW"))
|
try
|
||||||
return OpenTpw (arc, pent);
|
{
|
||||||
if (arc.File.View.AsciiEqual (entry.Offset+4, "HDJ\0"))
|
if (arc.File.View.AsciiEqual (entry.Offset, "TPW"))
|
||||||
return OpenImage (arc, pent);
|
return OpenTpw (arc, pent);
|
||||||
if (entry.Size > 12 && 'W' == arc.File.View.ReadByte (entry.Offset+4)
|
if (arc.File.View.AsciiEqual (entry.Offset+4, "HDJ\0"))
|
||||||
&& arc.File.View.AsciiEqual (entry.Offset+8, "RIFF"))
|
return OpenImage (arc, pent);
|
||||||
return OpenAudio (arc, entry);
|
if (entry.Size > 12 && 'W' == arc.File.View.ReadByte (entry.Offset+4)
|
||||||
|
&& arc.File.View.AsciiEqual (entry.Offset+8, "RIFF"))
|
||||||
|
return OpenAudio (arc, entry);
|
||||||
|
}
|
||||||
|
catch (Exception X)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Trace.WriteLine (X.Message, "[GRP]");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return base.OpenEntry (arc, entry);
|
return base.OpenEntry (arc, entry);
|
||||||
}
|
}
|
||||||
@ -340,7 +347,10 @@ namespace GameRes.Formats.Ankh
|
|||||||
if (n != 0)
|
if (n != 0)
|
||||||
count += GetBits (n) + 1;
|
count += GetBits (n) + 1;
|
||||||
}
|
}
|
||||||
Binary.CopyOverlapped (output, dst+offset, dst, count);
|
int src = dst + offset;
|
||||||
|
if (src < 0)
|
||||||
|
throw new InvalidDataException();
|
||||||
|
Binary.CopyOverlapped (output, src, dst, count);
|
||||||
dst += count;
|
dst += count;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user