@@ -405,28 +405,32 @@ [_entry release]; [super dealloc]; } -- (void)lowlevelWriteBuffer: (const void *)buffer - length: (size_t)length +- (size_t)lowlevelWriteBuffer: (const void *)buffer + length: (size_t)length { + size_t bytesWritten; + if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; if ((uint64_t)length > _toWrite) @throw [OFOutOfRangeException exception]; @try { - [_stream writeBuffer: buffer - length: length]; + bytesWritten = [_stream writeBuffer: buffer + length: length]; } @catch (OFWriteFailedException *e) { _toWrite -= [e bytesWritten]; @throw e; } - _toWrite -= length; + _toWrite -= bytesWritten; + + return bytesWritten; } - (bool)lowlevelIsAtEndOfStream { if (_stream == nil)