diff --git a/src/bsdiff/BinaryPatchUtility.cs b/src/bsdiff/BinaryPatchUtility.cs index 6f1cd01..d35e47a 100644 --- a/src/bsdiff/BinaryPatchUtility.cs +++ b/src/bsdiff/BinaryPatchUtility.cs @@ -79,8 +79,8 @@ 0 32 Header int[] I = SuffixSort(oldData); - byte[] db = new byte[newData.Length + 1]; - byte[] eb = new byte[newData.Length + 1]; + byte[] db = new byte[newData.Length]; + byte[] eb = new byte[newData.Length]; int dblen = 0; int eblen = 0; @@ -348,7 +348,10 @@ with control block a set of triples (x,y,z) meaning "add x bytes bytesToCopy -= actualBytesToCopy; } - // sanity-check + if (newPosition == newSize) + return; + + // sanity-check if (newPosition + control[1] > newSize) throw new InvalidOperationException("Corrupt patch.");