104 int copiedInSize = 0;
105 auto const currentBytes = in.ByteCount();
110 while (in.Next(
reinterpret_cast<void const**
>(&chunk), &chunkSize))
112 if (copiedInSize == 0)
114 if (chunkSize >= inSize)
116 copiedInSize = inSize;
119 compressed.
resize(inSize);
122 chunkSize = chunkSize < (inSize - copiedInSize) ? chunkSize : (inSize - copiedInSize);
124 std::copy(chunk, chunk + chunkSize, compressed.
data() + copiedInSize);
126 copiedInSize += chunkSize;
128 if (copiedInSize == inSize)
130 chunk = compressed.
data();
136 if (in.ByteCount() > (currentBytes + copiedInSize))
137 in.BackUp(in.ByteCount() - currentBytes - copiedInSize);
139 if ((copiedInSize == 0 && chunkSize < inSize) || (copiedInSize > 0 && copiedInSize != inSize))
142 return lz4Decompress(chunk, inSize, decompressed, decompressedSize);