mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-16 20:17:01 +00:00
Match COutputStream::DoPut (Thanks HeartPiece!)
This commit is contained in:
@@ -21,28 +21,32 @@ COutputStream::~COutputStream() {
|
||||
}
|
||||
|
||||
void COutputStream::DoPut(const void* ptr, size_t len) {
|
||||
if (len == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
mNumWrites += len;
|
||||
if (mBufLen <= len + mUnwrittenLen) {
|
||||
memcpy((uchar*)mBufPtr + mUnwrittenLen, ptr, len);
|
||||
mUnwrittenLen += len;
|
||||
return;
|
||||
}
|
||||
while (len != 0) {
|
||||
uint count = mBufLen - mUnwrittenLen;
|
||||
uint offset = len;
|
||||
if (count < len) {
|
||||
len = count;
|
||||
uint offset;
|
||||
uchar* offsetPtr;
|
||||
uint tempLen = len;
|
||||
if (tempLen != 0) {
|
||||
mNumWrites += tempLen;
|
||||
if (tempLen + mUnwrittenLen <= mBufLen) {
|
||||
memcpy((uchar*)mBufPtr + mUnwrittenLen, ptr, tempLen);
|
||||
mUnwrittenLen += tempLen;
|
||||
return;
|
||||
}
|
||||
if (count != 0) {
|
||||
memcpy((uchar*)mBufPtr + mUnwrittenLen, (uchar*)ptr + offset, len);
|
||||
mUnwrittenLen += len;
|
||||
len -= len;
|
||||
} else {
|
||||
DoFlush();
|
||||
|
||||
offsetPtr = (uchar*)ptr + tempLen;
|
||||
while (tempLen != 0) {
|
||||
uint count = mBufLen - mUnwrittenLen;
|
||||
offset = count;
|
||||
if (tempLen < count) {
|
||||
offset = tempLen;
|
||||
}
|
||||
if (offset != 0) {
|
||||
memcpy((uchar*)mBufPtr + mUnwrittenLen, (offsetPtr - tempLen), offset);
|
||||
|
||||
tempLen -= offset;
|
||||
mUnwrittenLen += offset;
|
||||
} else {
|
||||
DoFlush();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,6 @@
|
||||
*/
|
||||
|
||||
#include "fdlibm.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const double
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user