private void CopyDescriptorBytesDirect(ZipUpdate update, Stream stream, ref long destinationPosition,
long sourcePosition) {
int bytesToCopy=GetDescriptorSize(update);
while (bytesToCopy>0) {
int readSize=bytesToCopy;
byte[] buffer=GetBuffer();
stream.Position=sourcePosition;
int bytesRead=stream.Read(buffer, 0, readSize);
if (bytesRead>0) {
stream.Position=destinationPosition;
stream.Write(buffer, 0, bytesRead);
bytesToCopy-=bytesRead;
destinationPosition+=bytesRead;
sourcePosition+=bytesRead;
} else {
throw new ZipException("Unxpected end of stream");
}
}
}