diff --git a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack50_cpp.cs b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack50_cpp.cs index 73fb3722..b5eda3de 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack50_cpp.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack50_cpp.cs @@ -249,7 +249,8 @@ bool UnpReadBuf() // is not less than CRYPT_BLOCK_SIZE, so we can align it without risk // to make it zero. if (DataSize>0) - memmove(Inp.InBuf,Inp.InBuf+Inp.InAddr,DataSize); + //x memmove(Inp.InBuf,Inp.InBuf+Inp.InAddr,DataSize); + Buffer.BlockCopy(Inp.InBuf, Inp.InAddr, Inp.InBuf, 0, DataSize); Inp.InAddr=0; ReadTop=DataSize; } @@ -532,15 +533,15 @@ void UnpWriteArea(size_t StartPtr,size_t EndPtr) else if (EndPtr=DestUnpSize) return; @@ -548,7 +549,7 @@ void UnpWriteData(byte *Data,size_t Size) int64 LeftToWrite=DestUnpSize-WrittenFileSize; if ((int64)WriteSize>LeftToWrite) WriteSize=(size_t)LeftToWrite; - UnpIO->UnpWrite(Data,WriteSize); + UnpIO->UnpWrite(Data, offset, WriteSize); WrittenFileSize+=Size; }