aboutsummaryrefslogtreecommitdiff
path: root/common/stream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/stream.cpp')
-rw-r--r--common/stream.cpp32
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)