mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-04-26 12:01:43 +00:00
adding some checks for more safety
This commit is contained in:
parent
3e140b9e80
commit
cab3daa783
1 changed files with 10 additions and 0 deletions
|
|
@ -159,6 +159,9 @@ public:
|
|||
|
||||
template <typename T>
|
||||
T *Read(T *aBuffer, s32 aCount) const {
|
||||
if (aCount <= 0 || aBuffer == NULL) {
|
||||
return aBuffer;
|
||||
}
|
||||
if (mOffset + aCount * sizeof(T) <= mSize) {
|
||||
memcpy(aBuffer, mData + mOffset, aCount * sizeof(T));
|
||||
mOffset += aCount * sizeof(T);
|
||||
|
|
@ -177,6 +180,9 @@ public:
|
|||
|
||||
template <typename T>
|
||||
void Write(const T *aBuffer, s32 aCount) {
|
||||
if (aCount <= 0 || aBuffer == NULL) {
|
||||
return;
|
||||
}
|
||||
if (!mReadOnly) {
|
||||
Grow(mOffset + aCount * sizeof(T));
|
||||
memcpy(mData + mOffset, aBuffer, aCount * sizeof(T));
|
||||
|
|
@ -313,6 +319,10 @@ public:
|
|||
public:
|
||||
void Read(BinFile *aFile) {
|
||||
s32 _Length = aFile->Read<s32>();
|
||||
if (_Length <= 0) {
|
||||
Resize(0);
|
||||
return;
|
||||
}
|
||||
Resize(_Length);
|
||||
aFile->Read<T>(mBuffer, _Length);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue