101 int copiedInSize = 0;
102 auto const currentBytes = in.ByteCount();
107 while (in.Next(
reinterpret_cast<void const**
>(&chunk), &chunkSize))
109 if (copiedInSize == 0)
111 if (chunkSize >= inSize)
113 copiedInSize = inSize;
116 compressed.
resize(inSize);
119 chunkSize = chunkSize < (inSize - copiedInSize) ? chunkSize : (inSize - copiedInSize);
121 std::copy(chunk, chunk + chunkSize, compressed.
data() + copiedInSize);
123 copiedInSize += chunkSize;
125 if (copiedInSize == inSize)
127 chunk = compressed.
data();
133 if (in.ByteCount() > (currentBytes + copiedInSize))
134 in.BackUp(in.ByteCount() - currentBytes - copiedInSize);
136 if ((copiedInSize == 0 && chunkSize < inSize) || (copiedInSize > 0 && copiedInSize != inSize))
139 return lz4Decompress(chunk, inSize, decompressed, decompressedSize);