diff options
Diffstat (limited to 'common/stream.cpp')
-rw-r--r-- | common/stream.cpp | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/common/stream.cpp b/common/stream.cpp index 718c806ff3..9f8f6127f1 100644 --- a/common/stream.cpp +++ b/common/stream.cpp @@ -231,21 +231,13 @@ BufferedReadStream::BufferedReadStream(ReadStream *parentStream, uint32 bufSize, _realBufSize(bufSize) { assert(parentStream); - allocBuf(bufSize); - assert(_buf); -} - -void BufferedReadStream::allocBuf(uint32 bufSize) { _buf = new byte[bufSize]; + assert(_buf); } BufferedReadStream::~BufferedReadStream() { if (_disposeParentStream) delete _parentStream; - deallocBuf(); -} - -void BufferedReadStream::deallocBuf() { delete[] _buf; } @@ -294,7 +286,7 @@ uint32 BufferedReadStream::read(void *dataPtr, uint32 dataSize) { // Satisfy the request from the buffer memcpy(dataPtr, _buf + _pos, dataSize); _pos += dataSize; - } + } return alreadyRead + dataSize; } @@ -309,7 +301,7 @@ bool BufferedSeekableReadStream::seek(int32 offset, int whence) { // Note: We could try to handle SEEK_END and SEEK_SET, too, but // since they are rarely used, it seems not worth the effort. _eos = false; // seeking always cancels EOS - + if (whence == SEEK_CUR && (int)_pos + offset >= 0 && _pos + offset <= _bufSize) { _pos += offset; @@ -334,24 +326,16 @@ BufferedWriteStream::BufferedWriteStream(WriteStream *parentStream, uint32 bufSi _bufSize(bufSize) { assert(parentStream); - allocBuf(bufSize); + _buf = new byte[bufSize]; assert(_buf); } BufferedWriteStream::~BufferedWriteStream() { assert(flush()); - + if (_disposeParentStream) delete _parentStream; - - deallocBuf(); -} - -void BufferedWriteStream::allocBuf(uint32 bufSize) { - _buf = new byte[bufSize]; -} -void BufferedWriteStream::deallocBuf() { delete[] _buf; } @@ -359,7 +343,7 @@ uint32 BufferedWriteStream::write(const void *dataPtr, uint32 dataSize) { // check if we have enough space for writing to the buffer if (_bufSize - _pos >= dataSize) { memcpy(_buf + _pos, dataPtr, dataSize); - _pos += dataSize; + _pos += dataSize; } else if (_bufSize >= dataSize) { // check if we can flush the buffer and load the data // flush the buffer assert(flushBuffer()); @@ -367,7 +351,7 @@ uint32 BufferedWriteStream::write(const void *dataPtr, uint32 dataSize) { _pos += dataSize; } else { // too big for our buffer // flush the buffer - assert(flushBuffer()); + assert(flushBuffer()); return _parentStream->write(dataPtr, dataSize); } return dataSize; @@ -375,7 +359,7 @@ uint32 BufferedWriteStream::write(const void *dataPtr, uint32 dataSize) { bool BufferedWriteStream::flushBuffer() { uint32 bytesToWrite = _pos; - + if (bytesToWrite) { _pos = 0; if (_parentStream->write(_buf, bytesToWrite) != bytesToWrite) |