aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/sprite.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2010-10-24 22:17:44 +0000
committerAndrew Kurushin2010-10-24 22:17:44 +0000
commit67cc1b8a84e8cbc344e87fe0f4715cae96199b69 (patch)
treefddf53a8a74288676993025c5c1ad073982db740 /engines/saga/sprite.cpp
parent859c1c2c08c39262de6b6ba6e1169bb03d14353a (diff)
downloadscummvm-rg350-67cc1b8a84e8cbc344e87fe0f4715cae96199b69.tar.gz
scummvm-rg350-67cc1b8a84e8cbc344e87fe0f4715cae96199b69.tar.bz2
scummvm-rg350-67cc1b8a84e8cbc344e87fe0f4715cae96199b69.zip
SAGA: replace Resource:loadResource malloc with ByteArray class
svn-id: r53779
Diffstat (limited to 'engines/saga/sprite.cpp')
-rw-r--r--engines/saga/sprite.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/engines/saga/sprite.cpp b/engines/saga/sprite.cpp
index 4e0d9c6f75..eb62fb20ff 100644
--- a/engines/saga/sprite.cpp
+++ b/engines/saga/sprite.cpp
@@ -75,8 +75,7 @@ Sprite::~Sprite() {
void Sprite::loadList(int resourceId, SpriteList &spriteList) {
SpriteInfo *spriteInfo;
- byte *spriteListData = 0;
- size_t spriteListLength = 0;
+ ByteArray spriteListData;
uint16 oldSpriteCount;
uint16 newSpriteCount;
uint16 spriteCount;
@@ -86,13 +85,13 @@ void Sprite::loadList(int resourceId, SpriteList &spriteList) {
const byte *spritePointer;
const byte *spriteDataPointer;
- _vm->_resource->loadResource(_spriteContext, resourceId, spriteListData, spriteListLength);
+ _vm->_resource->loadResource(_spriteContext, resourceId, spriteListData);
- if (spriteListLength == 0) {
+ if (spriteListData.empty()) {
return;
}
- MemoryReadStreamEndian readS(spriteListData, spriteListLength, _spriteContext->isBigEndian());
+ ByteArrayReadStreamEndian readS(spriteListData, _spriteContext->isBigEndian());
spriteCount = readS.readUint16();
@@ -112,14 +111,14 @@ void Sprite::loadList(int resourceId, SpriteList &spriteList) {
else
offset = readS.readUint16();
- if (offset >= spriteListLength) {
+ if (offset >= spriteListData.size()) {
// ITE Mac demos throw this warning
warning("Sprite::loadList offset exceeded");
spriteList.resize(i);
return;
}
- spritePointer = spriteListData;
+ spritePointer = spriteListData.getBuffer();
spritePointer += offset;
if (bigHeader) {
@@ -144,7 +143,7 @@ void Sprite::loadList(int resourceId, SpriteList &spriteList) {
}
outputLength = spriteInfo->width * spriteInfo->height;
- inputLength = spriteListLength - (spriteDataPointer - spriteListData);
+ inputLength = spriteListData.size() - (spriteDataPointer - spriteListData.getBuffer());
spriteInfo->decodedBuffer.resize(outputLength);
if (outputLength > 0) {
decodeRLEBuffer(spriteDataPointer, inputLength, outputLength);
@@ -167,8 +166,6 @@ void Sprite::loadList(int resourceId, SpriteList &spriteList) {
memcpy(dst, &_decodeBuf.front(), outputLength);
}
}
-
- free(spriteListData);
}
void Sprite::getScaledSpriteBuffer(SpriteList &spriteList, uint spriteNumber, int scale, int &width, int &height, int &xAlign, int &yAlign, const byte *&buffer) {